gpt4 book ai didi

在 C 中将 Protocol Buffer 与 JSON 相互转换,而不生成 C 代码

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:56 27 4
gpt4 key购买 nike

我需要使用 .desc 文件来读取序列化的 Protocol Buffer 消息并将它们转换为 JSON(使用 jansson)。

这是因为 Protocol Buffer 消息格式的更改比 C 代码更频繁。 .desc 文件将是可执行文件的运行时输入。

我找到了 https://github.com/Sannis/protobuf2json-c但我对此的解读是它需要生成 C 代码。特别是 ProtobufCMessage 需要存在才能解码消息,我看不到制作 ProtobufCMessage 的方法(来自 /usr/include/google/protobuf-c/protobuf-c.h) 而不生成 C 代码。

我是否遗漏了什么,或者我需要编写新代码吗?

最佳答案

我不熟悉 .desc 扩展名,但我从上下文中猜测它是一个包含 protobuf FileDescriptorProto 的文件,在 中定义google/protobuf/descriptor.proto.

要执行您想要的操作,您很可能需要使用 Protobuf C++ 或 Java 库,每个库都定义了一个类 DynamicMessage,它能够根据描述符模拟任意消息类型。然后,您可以将其与任何基于标准 Protobuf 反射接口(interface)的 Protobuf-JSON 库结合使用。 (您也可以非常轻松地编写自己的 JSON 转换器;使用 TextFormat 类(在 C++ 和 Java Protobuf 库中都可以找到)作为模板。)

我的理解是 protobuf-c 目前不包含与 DynamicMessage 等价的东西。

关于在 C 中将 Protocol Buffer 与 JSON 相互转换,而不生成 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433976/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com