C ++中的Java反序列化

时间:2013-06-19 23:37:54

标签: java c++ deserialization

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我会在JNI绑定的JVM中对其进行反序列化,然后使用Java方法将数据转换为C ++程序所需的格式。 Java和C ++之间存在足够的差异,即使你可以直接在C ++中完成它,你也必须模拟Java环境的一大块,以便对数据有很大的了解。

序列化的Java对象很少是单个对象,它们通常成为相关对象的“网络”,例如包含Map的Object,其中有许多字符串作为键来引用who-know-what作为值。这只是一个嵌入属性。