当前位置: 首页 > 知识库问答 >
问题:

反序列化没有源文件的原型

潘振国
2023-03-14

是否有可能在不访问源. proto文件/生成的类的情况下反序列化原型消息?我的源系统使用Ruby生成消息,并使用Java。源系统可以创建消费者无法轻松了解的新消息格式。或者,消费者访问原始类的最佳方式是什么?有没有可能有某种原始存储库?

共有1个答案

时同
2023-03-14

没有模式.proto文件或编译的描述符),您只能将Protobuf解码为一系列标记/值对,其中标记是数字的,值的类型信息有限。这可能足以让人对协议进行反向工程,但通常对代码没有用处。

通过发送文件描述符集(基本上是相关.proto文件的编译版本),可以将模式与有效负载一起发送,如下所述:

https://developers.google.com/protocol-buffers/docs/techniques#self-description

然而,这并不像听起来那么有用!FileDescriptorSet将允许您确定字段的名称和类型,但这并不意味着您的代码将知道如何处理它们。

也就是说,有一些可能的用例:

  • 您可以有一个代理,根据模式将消息转换为JSON
  • 您可以使用一个存储系统来解析消息,以便以不同的形式存储它。例如,它可能会转换行和列以获得更好的压缩,也可能会对字段进行某种索引

然而,在这些用例中,我通常建议使用必要的模式对代理或存储系统进行预配置,而不是将它们与每条消息一起发送,因为模式往往非常大。

 类似资料:
  • 我试图通过CLI反序列化保存为protobuf的文件(似乎是最容易做到的事情)。我不希望使用protoc进行编译,将其导入编程语言,然后读取结果。 我的用例:一个TensorFlow lite工具以原型格式输出了一些数据。我也在TensorFlow存储库中找到了原型定义。我只想快速阅读输出。具体来说,我正在从工具中获取消息。

  • 本文向大家介绍详解PHP序列化和反序列化原理,包括了详解PHP序列化和反序列化原理的使用技巧和注意事项,需要的朋友参考一下 0.前言 对象的序列化和反序列化作用就不再赘述,php中序列化的结果是一个php自定义的字符串格式,有点类似json. 我们在任何语言中设计对象的序列化和反序列化都需要解决几个问题 把某个对象序列化之后,序列化的结果有自描述的功能(从序列化的结果中知道这个对象的具体类型, 知

  • 我正在使用gson的领域。我有一个模态,它有一个int类型字段的列表。Realm当前不支持原语列表。要解决这个问题,有一个解决方案。我创建了我的RealmInt类。 我有一个大的模态物体。。 我必须将下面的json数组反序列化为Product modals。 这里有一个解决方案,但它不适用于大型对象。我只需要更改类别数组和其他反序列化必须在默认情况下进行gson反序列化。

  • 背景: 所以我有一个方法调用,我想保存到一个文本文件中。这样做的目的是将可运行的序列化对象保存到文本文件中,并在以后从文本文件中获取要执行的对象。 错误是: 我理解错误,Runnable是一个接口,它不能被序列化。然而,我还能做些什么来解决我的问题吗? 解决方案尝试1。错误

  • 问题内容: 我正在使用Xstream序列化Job对象。看起来不错。 但是反序列化,我有一个问题: 你们中的一个人以前遇到过这个问题吗? 这是我序列化的方法: 我也尝试这样做: 对于反序列化,我这样做是这样的: XML结构: 如果是,我想听听。提前致谢。 问题答案: fromXML没有文件名,请尝试: 以String形式读取文件内容。 在XStream中,字段名“ id”和“引用”也恰好是“系统属性

  • 问题内容: 我目前无法在KSTREAM APP 中 反序列化avro PRIMITIVE密钥 用avro模式编码的密钥(已在模式注册表中注册), 当我使用kafka-avro-console-consumer时,我可以看到密钥已正确反序列化 但是不可能使其在KSTREAM应用程序中工作 密钥的avro模式是主要的: 我已经关注了合流的文档 它对于该值工作得很好,但是该键将是一个字符串,该字符串包含