.NET与Java的序列化/反序列化兼容性问题

3
在将.NET中的对象序列化并在Java中进行反序列化时,是否需要注意兼容性问题?
我在Java中反序列化一个在.NET中序列化的对象时遇到了问题。
以下是详细的问题陈述:
在.NET平台上,我有一个cookie。 1. 序列化Cookie 2. 然后使用Triple DES算法对其进行加密。 3. 将其发送到Java应用程序
在Java平台上 1. 使用Triple DES解密Cookie,得到一些字节 2. 使用类似以下代码反序列化字节
new ObjectInputStream(new ByteArrayInputStream(byte[] decryptedCookie)).readObject();
我得到的异常堆栈跟踪如下: java.io.StreamCorruptedException: invalid stream header: 2F774555 at java.io.ObjectInputStream.readStreamHeader(Unknown Source) at java.io.ObjectInputStream.(Unknown Source)

1
序列化为什么?字节?XML? - Ryan Fernandes
Ryan说了什么?你的代码是什么样子的?这里提供的信息不足以回答你的问题。 - Peter Recore
3个回答

5

WOX序列化器为.Net和Java提供了互操作性的序列化。


这是否意味着C#/.NET和Java只能使用WOX序列化程序才能兼容?难道没有其他选择吗? - user159722
我所知道的另一种选择是在 .Net 或 Java 上自己处理序列化/反序列化,以复制另一个平台的格式。这就是 WOX 项目产生的全部原因。 - Eric J.
更新:自从我原始发布以来,JSON序列化已成为一种流行的跨平台序列化机制。它是一种相当紧凑的文本表示形式,但不如二进制格式紧凑。 - Eric J.
嗨Eric,我们是否可以自己处理序列化/反序列化。这可能吗? - Aada
@Aada:当然,你可以编写自己的跨平台序列化程序。但这并不是一件简单的事情。 - Eric J.

1
如果您使用XML序列化,那么在Java中反序列化时不应该遇到任何问题,因为最坏的情况下,您只需要编写自己的代码来重构对象即可。

在.NET中,将字符串序列化与将XML序列化有何不同? 最终重要的是我在Java中如何反序列化。 不是吗?我的理解是ObjectInputStream是在Java中反序列化的唯一方法,但在这种情况下它不起作用。请澄清? - user159722
我从未在Java中进行过反序列化,我只是想说,最坏的情况是,如果您有对象的XML,您将不得不编写一些代码来解析XML并在Java中重新构建您的对象。 - Daniel

0

Java和.Net序列化为二进制的方式不同。如何知道另一个对象,例如.Net将具有字典和Java Maps?(加上字符串的二进制表示可能不同)。

您必须使用两者都理解并编码以进行对象映射的某些数据格式。因此,上面提到XML和WOX的答案。我也使用过内部公司产品。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接