2011-08-10 17 views
16

¿Alguien está familiarizado con una solución estable de C++ (biblioteca, fragmento de código, etc.) que convierte mensajes protobuf en/desde JSON?C++ Protobuf a/desde la conversión JSON

+1

mensajes protobuf * por sí mismos * realmente no tienen suficiente información para eso; Me gustaría deserializarme en un modelo de objetos (protobuf), y serializar (tu elección de motor json) que ... No uso C++, así que no conozco las opciones exactas disponibles allí (es muy fácil) con protobuf-net, pero: plataforma diferente) –

+1

Muchas gracias por la idea, Marc. Definitivamente ahorraría mucho tiempo. También estoy considerando probar el mecanismo de reflexión de protobuf. Afortunadamente, uno de los enfoques funcionará :) –

+1

Creo que usar el mecanismo de reflexión de protobuf es un buen enfoque para hacer un serializador/programador JSON genérico desde JSON a tipos generados por protobuf. He hecho algo como esto, pero para tipos generados por CORBA IDL en http://code.google.com/p/corbasim/ –

Respuesta

3

He realizado una implementación de arranque de un analizador JSON para tipos generados por protobuf, utilizando su mecanismo de reflexión y adaptando el análisis que hice previamente para los tipos generados por CORBA IDL.

Puede encontrarlo en http://corbasim.googlecode.com/svn/trunk/protobuf2json_exported.zip

De esta manera para cada mensaje protobuf definido, usted será capaz de analizar sus casos haciendo:

Foo foo; 

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

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

Es sólo una implementación inicial, y que sólo admite campos de cadenas, pero es fácil implementar todo tipo de campos.

1

pb2json es otra biblioteca C++ que puede hacer esto.

3

pbjson es otro, que se basó en rapidjson, tal vez más rápido.