当前位置:  开发笔记 > 编程语言 > 正文

用不同的语言反序列化

如何解决《用不同的语言反序列化》经验,为你挑选了1个好方法。

log4j网络适配器将事件作为序列化java对象发送.我希望能够捕获此对象并使用其他语言(python)对其进行反序列化.这可能吗?

注意网络捕获很容易; 它只是一个TCP套接字并在流中读取.困难在于反序列化部分



1> Charles Mill..:

一般来说,没有.

Java序列化的流格式在本文档中定义,但您需要访问原始类定义(以及将其加载到Java运行库中)以将流数据转换回接近原始对象的内容.例如,类可以定义writeObject()和readObject()方法来定制自己的序列化表单.

(编辑: lubos hasko建议有一个小程序来反序列化Python前面的对象,但问题是,为了实现这一点,你的"小java程序"需要加载所有相同类的相同版本.如果你从一个应用程序接收日志消息,这很棘手,如果你要多路复用多个日志流,这真的很棘手.无论哪种方式,它都不会再是一个小程序了.编辑2 :我可能是错的在这里,我不知道什么是序列化的.如果它只是log4j类你应该没问题.另一方面,它可以记录任意异常,如果它们被放入流中,我的观点就好了.)

定制log4j网络适配器并用更容易反序列化的形式替换原始序列化会更容易(例如,您可以使用XStream将对象转换为XML表示形式)

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有