C++;Protobuf到/从JSON转换 是熟悉C++的一个稳定的C++解决方案(库、代码片段等),它将原BoFF消息转换为JSON?< /P> < P>,我使用它的反射机制,对一个原型生成的JSON解析器进行了引导实现,并适应了以前对CORBA IDL生成类型的解析。

C++;Protobuf到/从JSON转换 是熟悉C++的一个稳定的C++解决方案(库、代码片段等),它将原BoFF消息转换为JSON?< /P> < P>,我使用它的反射机制,对一个原型生成的JSON解析器进行了引导实现,并适应了以前对CORBA IDL生成类型的解析。,c++,json,serialization,protocol-buffers,C++,Json,Serialization,Protocol Buffers,你可以在 通过这种方式,对于每个protobuf定义的消息,您将能够通过执行以下操作来解析其实例: Foo foo; const std::string json_foo = "{\"text\": \"Hello world\"}"; protobuf2json::json::parse(foo, json_foo); 这只是一个初始实现,它只是支持字符串字段,但是很容易实现所有类型的字段。是另一个C++库,可以做到这一点。 < P>这是更好的IMO: 它在两个方向上进行转换并处理扩展是

你可以在

通过这种方式,对于每个protobuf定义的消息,您将能够通过执行以下操作来解析其实例:

Foo foo;

const std::string json_foo = "{\"text\": \"Hello world\"}";

protobuf2json::json::parse(foo, json_foo);

这只是一个初始实现,它只是支持字符串字段,但是很容易实现所有类型的字段。

是另一个C++库,可以做到这一点。

< P>这是更好的IMO:


它在两个方向上进行转换并处理扩展

是另一个基于rapidjson的扩展,可能更快。

protobuf消息本身并没有足够的信息;我只想反序列化成一个对象模型(protobuf)和序列化(您选择的json引擎),它。。。我不使用C++,所以我不知道那里的确切选项(它与ToBuffnet很简单,但是不同的平台)非常感谢你的想法,贾景晖。这肯定会节省很多时间。我也在考虑尝试protobuf的反射机制。希望其中一种方法能起作用:)我认为使用protobuf的反射机制是一种很好的方法,可以将一个通用的JSON序列化器/解析器从JSON生成到protobuf生成的类型。我做过类似的事情,但是对于CORBA IDL生成的类型,请参见protobuf v3支持JSON,请参见这一个为我做了一些事情。我首先尝试了
json2pb
,并努力让它正常工作(在文档方面几乎没有发现)。让这个
pbjson
工具与他们的测试示例一起工作,我没有遇到太多麻烦,我发现编辑他们的测试驱动程序来解析我的数据只需要很小的努力。顺便说一句,这个
pbjson
工具的作者说他们从
pb2json
中获得了灵感。