如何序列化Java对象,使其可以通过pickle(Python)进行反序列化?

如何序列化Java对象,使其可以通过pickle(Python)进行反序列化?,java,python,serialization,Java,Python,Serialization,我正在使用一个Python服务,该服务使用pickle消息作为其协议的一部分。我想从Java查询这个服务,但要这样做,我需要在客户端(Java)上pickle我的消息。是否有在JVM上运行的pickle实现(理想情况下,依赖性最小) 澄清:修改服务器端不是一个选项,因此,尽管交替序列化会很方便,但它们不会解决这里的问题。您可以使用像GSON或Jackson这样的Java JSON序列化程序来非常轻松地进行序列化,并使用python JSON pickle来反序列化一些额外的研究,MIT授权的库,

我正在使用一个Python服务,该服务使用pickle消息作为其协议的一部分。我想从Java查询这个服务,但要这样做,我需要在客户端(Java)上pickle我的消息。是否有在JVM上运行的
pickle
实现(理想情况下,依赖性最小)


澄清:修改服务器端不是一个选项,因此,尽管交替序列化会很方便,但它们不会解决这里的问题。

您可以使用像GSON或Jackson这样的Java JSON序列化程序来非常轻松地进行序列化,并使用python JSON pickle来反序列化

一些额外的研究,MIT授权的库,允许Java和.NET程序与Python世界接口。除了远程对象功能,它(更重要的)还包括一个
pickle
序列化程序和反序列化程序。

哎哟,这太难看了。我不这么认为,有没有可能让服务生成JSON或其他东西?根据所提供的数据,它可能非常简单,只需将
pickle.dumps
交换为
json.dumps
。如果可能的话,该服务背后的人肯定应该做出改变,对于除了保证留在Python中的原型和数据之外的任何东西来说,pickle都是一个非常糟糕的选择(例如,因为除了纯Python应用程序之外,它对任何东西都不重要)它应该像将Java
Map
序列化为pickle Python
Hash
一样简单。我不需要在客户方解除摩擦。将Jython作为依赖项是一个很难接受的问题。@SethFitzsimmons:Pickle是一个特定于Python的协议,通常被认为是“内部的”——协议本身没有文档记录,我们只使用标准的Pickle实现。因此,除非你想用java重新实现协议,否则你必须依赖Python或Jython。@ThomasK:我希望有人在遇到类似的“设计决策”后已经跳过了这一障碍。@Seth:我真的希望这样的“设计决策”很少出现。JSON与Python一样易于使用。当然,但在本例中,我没有机会修改服务器。原始链接已断开,当前链接为
https://github.com/irmen/Pyrolite/