2012-09-13 2 views
1

나는 파이썬에서 RabbitMQ를 사용하는 자바 응용 프로그램으로 파이썬 사전을 보내려고합니다. 파이썬 측에서는 사전을 여러 가지 방법으로 문자열로 변환합니다. 내가 새앙 토끼를 사용하여 메시지를 보내고는 자바 "청취자"에 도착RabbitMQ를 사용하여 자바로 파이썬 사전 보내기

{"vlan": {"ip": "12.12.12.12", "netmask": "255.255.255.255", "number": 12}} 

: 같은

  • json.dumps(dict)
  • pickle.dumps(dict)
  • str(dict)
  • 결과

      보인다. 내가 문자열로 데이터를 변환 할 때 자바 측면에서 , 내가 얻을 : 나는 자바 측에서 내가 파이썬 측에 보낸 동일한 문자열을 좀하고 싶습니다

      QueueingConsumer.Delivery delivery = consumer.nextDelivery(); 
      String data = new String(delivery.getBody()) 
      
      dp0 
      S'vlan' 
      p1 
      (dp2 
      S'ip' 
      p3 
      S'12.12.12.12' 
      p4 
      sS'netmask' 
      p5 
      S'255.255.255.255' 
      p6 
      sS'number' 
      p7 
      I12 
      ss. 
      

      .

      아이디어가 있으십니까?

    +1

    표시되는 출력물은 언어 간 통신을 위해 설계된 적이없는 Python 피클 형식입니다. JSON을 사용할 때 어떤 일이 발생 했습니까? –

    답변

    3

    언어별로 모두면에 쓰고 읽을 수있는 직렬화 형식을 사용하십시오. 파이썬 피클은 분명히 자바에서 비 직렬화 할 수없는 원시 파이썬 포맷입니다 (자이 썬 사용 제외). 대신 JSON 또는 XML 또는 프로토콜 버퍼를 사용하십시오.

    +0

    업데이트 : 내 실수 - 'json.dumps'로 잘 작동하며 Jackson을 사용하여 들어오는 문자열에서 POJO를 만들 수 있습니다. – balderman