7

假设一个java类的所有字段都是java原语,如果这样的对象已经被序列化了,它能否被C#成功反序列化为一个“等效”C#类的实例?

反过来可能吗 - C# 到 java?


我意识到有许多与语言无关的格式,例如可用于完成工作的 XML。我更感兴趣的是使用本序列化数据是否可行。

4

4 回答 4

5

The formats of serialized streams are available. I think you can write a class easily to parse the byte stream and create the required class in C#.

An article that specifies the serialized format: http://www.javaworld.com/community/node/2915

于 2013-07-23T05:33:17.457 回答
2

WOX将有助于实现可互操作的序列化。
它可以serialize/deserialize Java/C#对象into/from标准XML(平台无关)

于 2013-07-23T05:28:32.500 回答
1

这是不可能的,至少不使用两个框架都提供的本机序列化库,如上一篇SO 帖子中所述。

如果你想实现跨语言序列化/反序列化,你可以求助于 XML(Java的XSTream ,C#的 XStream-dot-net)或WOX

WOX 是用于 Java 和 C# 对象的 XML 序列化程序。换句话说,WOX 是一个库(用于 Java 的 woxSerializer.jar 和用于 C# 的 woxSerializer.dll),用于将 Java 和 C# 对象序列化为 XML 并再次返回。

于 2013-07-23T05:21:47.270 回答
0

如果您同意包含另一个依赖项,则可以考虑使用对象数据库(例如db4o)来完成这项工作。我自己没有尝试过,但根据维基百科的文章,

当类定义不可用时,db4o 使用称为“通用反射器”的自定义特性来表示类信息,这允许在混合 Java-.NET 环境中使用它,例如 Java 客户端 - .NET 服务器,反之亦然。

您可以在此处此处找到有关上述反射 API 的更多信息。

简而言之,这将导致您将 Java/C# 对象存储到(嵌入式)数据库(即,没有客户端/服务器架构,但通过加载包含整个数据库的单个文件)并检索 C#/Java 的系统之后从数据库中提取对象。

于 2013-07-23T05:54:02.863 回答