我的问题是这样的.我已经序列化了存储在文件中的二进制Java对象.我需要在C中重建对象并进行进一步处理.
我想我可以使用Java反序列化Java对象,再次序列化为acsii文件,然后加载C代码.另外,我知道可以使用JNI从C调用Java函数,但我不知道如何传递参数,即将对象返回给C.但有更好的方法吗?
谢谢!
解决方法:
如果您觉得足够勇敢,可以查看Java序列化specification并为Java序列化数据编写C解析器.
JNI路由可行,但您最终得到的是Java对象,而不是C对象.因此,您的C代码基本上必须对VM进行大量调用才能操作该数据(尽管您只需要获取对象的字段并将其复制到C对象中).
如果在C语言中编写Java unmarshaler听起来很麻烦,你可以按照自己的建议去做,并编写一个Java程序,将数据写入一种可以从C轻松解析的格式.但是现在你正在编写一个封送器(在Java中),如果你没有一个,那就是一个unmarshaler(在C中),所以也许只是解析Java序列化格式会更容易.
标签:java,c,serialization
来源: https://codeday.me/bug/20190726/1544609.html