【问题标题】:Sending python dictionary to java using RabbitMQ使用 RabbitMQ 将 python 字典发送到 java
【发布时间】:2012-09-13 09:47:38
【问题描述】:

我尝试使用 RabbitMQ 将 python 字典从 python 发送到 java 应用程序。 在 python 方面,我使用多种方式将字典转换为字符串。

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

结果如下:

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

我使用 pika 发送消息,它到达 java“侦听器”。 在 java 方面,当我将数据转换为字符串时,我得到:

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.

我想在 java 端获取我在 python 端发送的相同字符串。

有什么想法吗?

【问题讨论】:

  • 您显示的输出是 Python Pickle 格式,该格式从未设计用于跨语言通信。当你使用 JSON 时发生了什么?

标签: java python dictionary rabbitmq


【解决方案1】:

使用可以跨语言在双方上读写的序列化格式。 Python pickle 显然是一种原生 Python 格式,您无法在 Java 中反序列化(使用 Jython 除外)。请改用 JSON、XML 或协议缓冲区。

【讨论】:

  • 更新:我的错误 - 它适用于“json.dumps”,我可以使用 Jackson 从传入的字符串创建 POJO。
猜你喜欢
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多