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
Odpowiedz
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.
pb2json to kolejna biblioteka C++, która może to zrobić.
Ten jest lepszy IMO: https://github.com/shramov/json2pb
robi konwersję w obu kierunkach i obsługuje rozszerzenia
Fajnie, dziękuję! –
pbjson jest jeszcze jeden, który zbudowano na rapidjson, może szybciej.
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) –
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 :) –
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/ –