我有python服务器使用marshal
module序列化一些字典。并将序列化消息发送到c#客户端套接字。我如何在客户端(c#)端反序列化此消息。由于执行速度有问题,我无法使用IronPython。
或者你知道在Python和c#之间序列化/反序列化“消息”的其他方法。
答案 0 :(得分:3)
JSON怎么样?你可以编写,甚至可以找到一个用于C#的de-Python-pickle-er,但像dict这样的东西很容易在JSON中表示,这是一个众所周知的,定义明确的标准,可靠,快速的序列化/反序列化库几乎存在于每种语言中。当然还有XML,但JSON通常更容易使用。
答案 1 :(得分:1)
marshal
通常是特定于Python的。如果您需要跨语言支持,则应使用json
代替。
答案 2 :(得分:1)
答案 3 :(得分:0)
作为marshal
的替代,“协议缓冲区”在python和c#中都有很好的支持。 Google提供了python实现,并且有多个c#实现。协议缓冲区提供出色的版本控制支持,丰富的跨平台实现和非常高效的序列化,是快速二进制套接字使用的理想选择。