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

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

ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeInt(RANK_SIZE); oos.writeObject(_firstArray); oos.writeObject(_level[3]); oos.writeObject(_level[4]); ... 

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

我首先尝试将这些文件的生成移植到C#,但是失败了。 这些文件很小,我不必自己生成它们。

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

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

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

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

对于Java JSON库, Jackson是我个人的最爱。

http://www.ikvm.net/ IKVM可以完美地完成它。