我有两个需要相互交谈的应用程序。 App1 需要能够序列化 App2 然后可以反序列化的对象。很容易做到,对吧?这就是问题所在; App1 基于 C#,App2 基于 Java。所以App1需要以Java二进制文件格式写出文件。如何做到这一点?
在我看来,我有两个选择。第一个是想出某种方法在 C# 中序列化 Java 对象,以便 App1 只创建适当的文件。我的另一个选择是用 Java 编写一个转换器,它读取文件并相应地填充对象并序列化新填充的对象。这样,C# 应用程序只需写出某种格式的文本文件,转换器随后会解释该文件。
我无法对 Java 应用程序进行任何更改。
应该怎么做?
更新:
Java 应用程序已经在客户手中,因此更改序列化方案会导致客户现有数据不兼容。 Java 应用程序在处理此对象时使用 native java 序列化。不会对 Java 应用程序进行修改。
C# 应用程序使用 Protocol Buffer 来序列化自己的数据。
最佳答案
最佳答案是选项 3: 使用语言中立的序列化方案。
我使用 JavaScript。 Thrift 是另一种选择,我认为 Protocol Buffer 更侧重于 RPC,但也应该可用于序列化。 XML 或自定义二进制格式是其他选项。
编辑: 抱歉,没有注意到您不能对 Java 应用程序进行更改。也就是说,最好的方法可能是创建您自己定义明确的格式,编写一个可以读取该格式的 Java 应用程序,然后为遗留应用程序输出一个序列化的 Java 对象。
关于c# - 使用 C# 序列化 Java 可反序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/822163/