当前位置: 首页 > 面试题库 >

用其他语言反序列化

严子默
2023-03-14
问题内容

log4j网络适配器将事件作为序列化的Java对象发送。我希望能够捕获此对象并以另一种语言(python)将其反序列化。这可能吗?

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


问题答案:

通常,不会。

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

编辑: lubos
hasko建议使用一个小的Java程序对Python前面的对象进行反序列化,但是问题在于,要使其正常工作,您的“小java程序”需要加载所有相同类的相同版本。反序列化,如果你从一个应用程序接收日志消息,真是棘手,如果你复用多个日志流哪个是棘手无论哪种方式,它不会是一个小程序了。
EDIT2:
我可能是错的在这里,我不知道要序列化的内容。如果只是log4j类,应该没问题。另一方面,可以记录任意异常,如果它们也被放入流中,我的观点就是如此。)


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



 类似资料:
  • 问题内容: 什么语言用于构建c ++和java等底层语言? 您怎么能没有语言地建立第一语言? 问题答案: 在编译器的上下文中,此操作通常称为bootstrapping。特别是,请参阅“鸡肉和鸡蛋问题”部分,以直接找到您的问题。 非常 第一 编译器会一直手用汇编语言编写。如果您的下一个问题是“第一个汇编程序是怎么写的?” 那么答案是,第一个汇编器是用二进制机器代码手写的,并且可能带有前面板拨动开关。

  • 当使用缺乏原生Pact支持的语言来写服务提供者时,你仍然可以使用通用的Pact提供者端验证工具来验证是否满足契约。 通用Pact提供者验证 下面的设置简化了任何语言的Pact提供者端的验证过程。 特性: 验证发布到Pact Broker的Pact文件 在开发环境验证供测试用的本地Pact*.json文件 安装有Ruby环境以及sane的预先配置的Docker镜像,缺省为src / Rakefile

  • Nacos社区当前仅提供了Java版本的客户端,我们将主要依靠社区的贡献来发展多语言客户端。在未来,我们将向Nacos社区用户推荐那些最被广泛使用的以及支持最好的客户端作为Nacos相应语言的官方版本。 go cpp python nodejs more ...

  • JRuby Read more here: https://github.com/iconara/mikka. Groovy/Groovy++ Read more here: https://gist.github.com/620439. Clojure Read more here: http://blog.darevay.com/2011/06/clojure-and-akka-a-match

  • 我已经和flutter一起工作了几个月了,似乎在一个应用程序中没有太多关于后端或高级功能的工作。我喜欢使用Flutter来帮助我设计UI,但我想使用另一种语言来帮助我做一些其他的事情。例如,我想要显示一个全屏的相机页面(几乎像Snapchat一样),或者像通过App直接向另一个用户发送一条消息。我需要别的语言来做这样的事情吗?我不是高级程序员。我只想创建能够处理和存储一点点东西的简单应用程序。

  • 我试图反序列化以下XML: 我有以下代码,可以发出POST请求并成功运行,但无法反序列化到我的类中。 但是我得到了错误 没有MediaTypeFor事可用于从具有媒体类型应用程序/xml的内容中读取类型为jobInfo的对象, 我的作业信息是使用, 为了正确地反序列化,我错过了什么? 这意味着我应该把它当作一个字符串来读: 如何使用HttpClient读取XML响应? 但这表明它应该“起作用” H