在C#中反序列化java序列化文件

Sve*_*ven 3 c# java deserialization

我有一个java项目,它将一些对象和ints序列化为一个具有类似函数的文件

ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(RANK_SIZE);
oos.writeObject(_firstArray);
oos.writeObject(_level[3]);
oos.writeObject(_level[4]);
...
Run Code Online (Sandbox Code Playgroud)

现在我无法用C#反序列化该文件(试过BinaryFormatter),因为它显然只能将整个文件反序列化为单个对象(或数组,但我有不同长度的不同对象).

我首先尝试将这些文件的生成移植到C#,但是失败了.这些文件是小,我不应该产生他们自己.

我是否需要更改这些文件在Java中生成的方式,还是可以以任何方式对其进行反序列化?

Ern*_*ill 10

标准.NET框架中没有任何内容知道如何反序列化Java对象.理论上,您可以使用Java序列化规范并在C#中编写自己的反序列化代码.但这将是一个庞大而复杂的项目,我不认为你会发现很多客户对它的使用感兴趣.

更简单的方法是更改​​序列化数据以使用可移植格式的方式:JSON或某种形式的XML.Java和C#库都可以处理这种格式,总的工作量会减少几个数量级.我非常喜欢第二种方法.


fvu*_*fvu 5

也许一见钟情的反直觉解决方案可能是将它们序列化为一些常见的格式,如JSON?我甚至不确定Java版本中的序列化对象的二进制格式是否保证在Java版本之间保持不变....

对于Java JSON库,Jackson是我个人最喜欢的.