c# - 使用 C# 序列化 Java 可反序列化对象

标签 c# java serialization

我有两个需要相互交谈的应用程序。 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/

相关文章:

c# - 在生产服务器中托管一个带有 Entity Framework 的数据库网站

java - JAX-WS 始终内联发送 MTOM 附件

java - Java 中 String 的内存高效、低开销替换

java - 使用 Jackson ObjectMapper 的 JSON 反序列化 Joda Money 导致异常

c# - Entity Framework - 单个事务中的父子表更新

c# - 如何将数值转换为文字?

javascript - 我怎样才能获得这个链接元素?始终显示 "Unable to find element with link text == Search"

java - 使用比硬件线程更多的线程时的注意事项?

.net - 使用 DataContractSerializer 时忽略运行时的某些属性

c++ - Boost 序列化在 32 位和 64 位机器之间不起作用。任何其他序列化/压缩库?