gpt4 book ai didi

java - java程序可以读取C#序列化的对象吗?

转载 作者:行者123 更新时间:2023-11-30 06:33:39 28 4
gpt4 key购买 nike

我正在开发一个 Java 项目,该项目正在替换旧的 C# 程序。在旧的 C# 程序中,用户可以将他们正在处理的数据保存到 GZip 文件中,该文件是通过序列化包含所有数据的包装器对象并使用 GZipStream 写入来编写的。

我想为用户提供加载旧系统保存的数据的选项。使用 Java 的 GZipInputStream 打开 GZip 文件非常简单,但如何反序列化该对象?

我做了一些研究,发现了这个问题:Can a serialized simple java object be deserialized by C#?答案是没有库可以做到这一点,但是有关于 Java 如何序列化对象的文档,并且可以编写自己的代码来反序列化它们。

是否有已知的方法可以从 C# 到 Java 执行此操作?或者我应该从头开始编写自己的转换器?

最佳答案

您必须序列化 JSON 或 XML 文件中的所有内容。文件中根本不应存储任何二进制数据。然后您可以使用任意库在 Java 中对其进行反序列化。

您可以使用 JSON.net 序列化它并使用 Jackson 反序列化。

更新:事实上,您实际上可以编写一个 SaveData 类,将其编译为 .dll 并使其可用于 Com 互操作。然后,有一些java第三方库可以利用dll中的SaveData类,以便它可以在java应用程序中进行互操作。然后,将此 SaveData 序列化为文件(二进制格式即可)。但是我不确定序列化将如何在字节级别上进行。当你在java端反序列化它时,你真的会得到相同的对象吗?这个解决方案可能有效,但它很难看,至少和重写 c# 应用程序写入 json 一样“痛苦”

关于java - java程序可以读取C#序列化的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592147/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com