c++中的Java反序列化

Java deserialization in C++

本文关键字:反序列化 Java 中的 c++      更新时间:2023-10-16

我正在研究一个必须处理各种消息类型的C++应用程序。其中一种是serialized Java objects(没有可用的源)。
我想知道是否有人知道沿jdeserialize行c++库?
对于那些不熟悉它的人来说,jdeserialize基本上是解析序列化的对象并构建一个图。它做得很好,我一直在试验它——使用JNI来管理与主程序的交互。
这可以正常工作,但是很麻烦。我担心保养起来会很麻烦。

Java ABI与c++ ABI不兼容,所以您不能这样做。对象在内存中以不同的方式表示(这绝对不是唯一重要的区别,但应该足够了)。

我认为最好的方法是先用Java编写代码,然后将代码转换为c++。为了更快地开始,首先借鉴java的知识,逐步实现,并模拟一些特性(不需要反序列化ArrayList)。也许@user888379提到的Jdeserialize源代码就可以了。无论哪种方式,您可能也想在Java中反序列化对象,以便与c++代码进行结构比较。

我将在绑定JNI的JVM中对其进行反序列化,然后使用Java方法将数据转换为c++程序所需的格式。Java和c++之间有足够多的区别,即使你可以直接在c++中做,你也必须模拟Java环境的一个很好的块来理解数据。

序列化的Java对象很少是单个对象,它们经常成为相关对象的"网络",就像包含Map的对象一样,使用许多字符串作为键,这些字符串引用谁知道什么作为值。这只是一个嵌入属性