1

我尝试使用 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 端发送的相同字符串。

有任何想法吗?

4

1 回答 1

3

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

于 2012-09-13T09:49:10.967 回答