2011-08-10 5 views
16

Czy ktoś zna stabilne rozwiązanie w C++ (biblioteka, fragment kodu itp.), Który konwertuje komunikaty protobuf do/z JSON?C++ Protobuf do/z konwersji JSON

+1

Wiadomości typu protobuf * same w sobie * nie mają wystarczających informacji; Po prostu deserializować do modelu obiektowego (protobuf) i serializować (twój wybór silnika json), że ... Nie używam C++, więc nie znam dokładnych opcji dostępnych tam (to jest bryza z protobuf-net, ale: inna platforma) –

+1

Dziękuję bardzo za pomysł, Marc. Z pewnością zaoszczędziłoby to dużo czasu. Rozważam również wypróbowanie mechanizmu odbicia protobuf. Mam nadzieję, że jedno z podejść zadziała :) –

+1

Myślę, że używanie mechanizmu odbicia protobuf jest dobrym podejściem do stworzenia generycznego serializatora/parsera JSON z JSON do generowanych typów protobuf. Zrobiłem coś takiego, ale do generowanych przez CORBA IDL typów w http://code.google.com/p/corbasim/ –

Odpowiedz

3

Wykonałem implementację bootstrap parsera JSON dla typów generowanych protobuf, używając mechanizmu odbicia i dostosowując przeanalizowany przeze mnie parsowanie dla generowanych typów CORBA IDL.

Można go znaleźć na http://corbasim.googlecode.com/svn/trunk/protobuf2json_exported.zip

W ten sposób dla każdej wiadomości Protobuf zdefiniowane, będzie w stanie analizować swoje instancje, wykonując:

Foo foo; 

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

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

To tylko wstępny realizacji, a to po prostu obsługuj pola ciągów, ale łatwo jest zaimplementować wszystkie rodzaje pól.

1

pb2json to kolejna biblioteka C++, która może to zrobić.

3

pbjson jest jeszcze jeden, który zbudowano na rapidjson, może szybciej.