2011-08-10 97 views
16

是否有人熟悉稳定的C++解决方案(库,代码段等),它将protobuf消息转换为/从JSON?C++ Protobuf到/从JSON转换

+1

protobuf消息*本身*没有足够的信息;我只是反序列化成一个对象模型(protobuf)和serialize(你选择的json引擎)......我不使用C++,所以我不知道那里的确切选项(这是一件轻而易举的事情与protobuf网,但:不同的平台) –

+1

非常感谢你的想法,马克。这肯定会节省很多时间。我也在考虑尝试protobuf的反射机制。希望其中一种方法可以工作:) –

+1

我认为使用protobuf的反射机制是一种很好的方法,可以将JSON序列化器/解析器从JSON生成为protobuf生成的类型。我做了这样的事情,但在http://code.google.com/p/corbasim/ –

回答

3

我已经为protobuf生成的类型,使用它的反射机制以及调整之前为CORBA IDL生成的类型所做的解析做了一个JSON解析器的引导实现。

您可以在http://corbasim.googlecode.com/svn/trunk/protobuf2json_exported.zip

觉得通过这种方式为每个protobuf的定义的消息,你就可以做解析它的实例:

Foo foo; 

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

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

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

1

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

3

pbjson是另外一个,它建立在rapidjson,也许更快。