在C中将协议缓冲区转换为JSON或从JSON转换为JSON,而不生成C代码

在C中将协议缓冲区转换为JSON或从JSON转换为JSON,而不生成C代码,c,json,protocol-buffers,protobuf-c,C,Json,Protocol Buffers,Protobuf C,我需要使用.desc文件来读取序列化协议缓冲区消息并将其转换为JSON(使用jansson) 这是因为协议缓冲区消息格式的更改要比C代码频繁得多。.desc文件将是可执行文件的运行时输入 我发现,但我的理解是,它需要生成C代码。尤其是要解码的消息需要存在ProtobufCMessage,我看不到不生成c代码就生成ProtobufCMessage的方法(从/usr/include/google/protobuf-c/protobuf-c.h) 我是否错过了一些东西,或者我需要编写新代码?我不熟悉.

我需要使用
.desc
文件来读取序列化协议缓冲区消息并将其转换为JSON(使用jansson)

这是因为协议缓冲区消息格式的更改要比C代码频繁得多。
.desc
文件将是可执行文件的运行时输入

我发现,但我的理解是,它需要生成C代码。尤其是要解码的消息需要存在
ProtobufCMessage
,我看不到不生成c代码就生成ProtobufCMessage的方法(从
/usr/include/google/protobuf-c/protobuf-c.h


我是否错过了一些东西,或者我需要编写新代码?

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

<>要做你想做的事情,你很可能需要使用原BuffC++或java库,每个库定义一个类<代码>动态消息> /Cord>,它有能力模仿基于描述符的任意消息类型。然后,您可以将其与任何基于标准Protobuf反射接口的Protobuf JSON库结合使用。(也可以很容易编写自己的JSON转换器;使用<代码>文本格式< /Cord>类(在C++和java原型BILFILIBS中找到)作为模板。)
我的理解是protobuf-c目前不包含与
DynamicMessage

相当的
.desc
文件是
.proto
文件中的信息,以
描述符.proto
描述的协议缓冲格式编码。