Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中反序列化.net对象_Java_.net_Serialization_Deserialization - Fatal编程技术网

在Java中反序列化.net对象

在Java中反序列化.net对象,java,.net,serialization,deserialization,Java,.net,Serialization,Deserialization,为了帮助我们的用户,我们希望使我们基于Java的桌面产品自动配置自己,以使用基于.NET的第三方应用程序的基于文本的文件输出。为此,我试图从第三方产品中读取首选项,以确定它将输出文件存储在何处 首选项似乎存储在二进制格式的.NET序列化对象中。我猜这是因为二进制文件包含以下内容,从字节18开始: System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, ... ,[System.Objec

为了帮助我们的用户,我们希望使我们基于Java的桌面产品自动配置自己,以使用基于.NET的第三方应用程序的基于文本的文件输出。为此,我试图从第三方产品中读取首选项,以确定它将输出文件存储在何处

首选项似乎存储在二进制格式的.NET序列化对象中。我猜这是因为二进制文件包含以下内容,从字节18开始:

System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, ... ,[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, ...
我对.NET不太了解,Java是我的爱好。但我猜这表明该文件包含映射到对象的字符串字典

我在谷歌上搜索时没有找到对.NET序列化格式的清晰描述

假设我已经将整个文件读入一个字节数组,那么如何使用Java将字节数组解码成有用的东西呢

public Object decode(byte[] ary) {
     // help me here?
}
或者更好

public Map<String, String> decode(byte[] ary) {
     // help me here?
}
公共地图解码(字节[]){
//帮帮我?
}

(理想情况下,第三方供应商将以清晰记录的文本格式提供此信息。但由于他们是一家独立的公司,我无法影响他们的开发进度)。

这一切都取决于您是如何序列化的。如果您使用的是
BinaryFormatter
,我建议您:立即停止!如果你足够努力和长时间的话,你可能会让它工作,但它很脆弱,坦率地说,不值得付出努力。Java和.NET都有多个跨平台的二进制序列化库:最好选择其中一个,并将其用于序列化


BinaryFormatter
即使对于基于.NET的代码来说也很少是一个好的选择;对于跨平台代码来说,它从来都不是一个好的选择。

IMHO,即使你能做到这一点,它也很容易出错。我会尽一切努力让人们相信这不是解决问题的办法。@Mark,我不是序列化-第三方是,我无法控制他们的选择。@SteveMcLeod您可以通过他们提供的任何API对其进行反序列化,并以不同的-更合适的-选择重新序列化数据;p:您是否尝试过简单地询问他们正在使用什么序列化程序?