我一直在寻找一个xml序列化库,它可以将(Java / Python)对象序列化和反序列化为xml并返回。我现在正在使用XStream用于Java。如果XStream有一个python版本从Xstream生成的xml反序列化,那将为我完成。除非它们允许数据格式为xml,否则Thrift或其他库不会起作用。我正在寻找能够做到这一点的任何图书馆的建议。 - 谢谢
答案 0 :(得分:1)
由于Java和Python对象本身是如此不同,所以几乎不可能这样做,除非你双方都限制了允许的类型和这些东西。
在这种情况下,我建议您使用JSON,这是一种很好的互操作性格式,即使它不是XML。
否则,您可以轻松编写一个采用XStream XML并将其加载到Python对象中的库,但它始终限于Java和Python之间的相似内容。
答案 1 :(得分:0)
我认为您不太可能找到一种自动化方法来序列化Java对象并反序列化为Python对象。它们是不同的东西,所以如果你想翻译,你必须在一端或两端写一些代码。
如果它是非常简单的东西 - 字符串,数字,布尔值等等,那么你可能想要研究json,这是一种非常简单的格式,几乎每种语言都有绑定。在Python中反序列化json对象非常简单:
json.loads('{"test":false}')
解决问题的另一种方法可能是使用Jython,这是Java中的Python实现,因此您可以直接使用Java对象。
答案 2 :(得分:0)
问题是(就像其他答案所建议的那样)XStream是一个Java对象序列化框架,而不是一般的数据映射/绑定框架。这是设计的(参见XStream FAQ):优点是它可以很好地序列化和反序列化所有类型的Java对象。缺点是生成的XML结构相当严格,虽然您可以重命名,但其他可配置性并不高。
但XStream不是唯一的Java XML处理库。我建议将JAXB reference implementation或JibX作为可能更好的替代方案进行检查,以便您可以更好地控制要处理的XML。这可能是实现良好互操作性所必需的。
答案 3 :(得分:0)
它真的需要使用XML吗?
要在Java和Python之间序列化结构化数据,您可能需要考虑Google Protocol Buffers。