首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#序列化可反序列化的对象

使用C#序列化可反序列化的对象
EN

Stack Overflow用户
提问于 2009-05-04 21:32:48
回答 4查看 4.3K关注 0票数 5

我有两个应用程序需要相互通信。App1需要能够序列化App2可以反序列化的对象。很容易做到,对吧?这就是问题所在;App1是基于C#的,App2是基于Java的。因此,App1需要以Java二进制文件格式写出文件。如何做到这一点?

在我看来,我有两个选择。第一种方法是找出在C#中序列化Java对象的方法,以便App1只创建适当的文件。我的另一个选择是用Java编写一个转换器,它读取一个文件并相应地填充对象,然后序列化新填充的对象。这样,C#应用程序就只需要写出某种格式化的文本文件,然后转换器就会对其进行解释。

我不能对Java应用程序进行任何更改。

这应该怎么做呢?

更新:

Java应用程序已经掌握在客户手中,因此更改序列化方案将导致客户现有数据不兼容。Java App在处理此对象时使用原生java序列化。对Java应用程序的修改不会发生。

C#应用程序使用协议缓冲区来序列化自己的数据。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-04 21:35:04

最好的答案是选项3:使用语言中立的序列化方案。

我使用JavaScript。Thrift是另一种选择,我认为协议缓冲区更专注于RPC,但也应该可用于序列化。XML或自定义的二进制格式可能是其他选择。

编辑:对不起,没有注意到您不能对Java应用程序进行更改。也就是说,最好的方法可能是创建自己定义良好的格式,编写一个可以读取该格式的java应用程序,然后为遗留应用程序输出一个序列化的java对象。

票数 7
EN

Stack Overflow用户

发布于 2009-05-04 21:36:38

"IKVM“可能是你需要用到的。此产品允许您转换编译的java字节码(.jar等)转换为.NET动态链接库。它非常容易使用,可能会为您提供所需的互操作。

除此之外,不使用二进制级互操作的最简单方法是使用纯文本格式,如CSV或XML。

票数 1
EN

Stack Overflow用户

发布于 2009-05-04 21:38:32

只需使用XML序列化即可。这两个框架都有很好的支持,其简单性将使其更容易调试/维护。用Java编写一个小程序,导入XML并写入二进制文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/822163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档