3

我有 python 服务器,它使用marshal模块序列化一些字典。并将序列化消息发送到 c# 客户端套接字。我如何在客户端 (c#) 端反序列化此消息。由于执行速度的问题,我无法使用 IronPython。

或者您是否知道在 Python 和 c# 之间序列化/反序列化“消息”的其他方法。

4

4 回答 4

3

JSON呢?你可以为 C# 编写,甚至可能找到一个 de-Python-pickle-er,但是像 dict 这样的东西很容易用 JSON 表示,这是一个众所周知的、明确定义的标准,用于可靠、快速的序列化/反序列化库几乎存在于所有语言中。当然还有 XML,但 JSON 通常更容易使用。

于 2012-12-06T22:51:47.030 回答
1

marshal通常是特定于 Python 的。如果您想要跨语言支持,那么您应该使用json

于 2012-12-06T22:50:59.500 回答
1

YAML支持以多种语言提供,并支持多种数据类型JSON语法是 YAML 1.2 版的子集,也享有广泛的支持。

于 2012-12-06T23:28:19.650 回答
0

作为 的替代方案marshal,“协议缓冲区”在 python 和 c# 中都有很好的支持。Google 提供了 python 实现,并且有多个 c# 实现。协议缓冲区提供出色的版本控制支持、丰富多样的跨平台实现和非常高效的序列化,非常适合快速二进制套接字使用。

于 2012-12-06T22:59:42.757 回答