2011-08-10 133 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,也許更快。