Pregunta

Estoy analizando los datos de JSON usando JSONCPP. Realmente no necesito entender los datos, solo necesito imprimir algunas propiedades y sus valores. De alguna manera es difícil de hacer. Primero necesito saber qué tipo es el valor y luego obtener el valor y luego convertirlo en cadena nuevamente. Hay un escritor de estilo, pero no quiero usarlo, ya que agrega algo de CRLF al final.

Hago algo como esto

CJsonHelper::getUInt(Json::Value &root, std::string key){
    return root.get(key, 0-1).isInt() ? root.get(key, 0-1).asUInt() : 0-1;
}

¿Podría escribir una sola función para obtener todas las propiedades con esa función que realmente no le importa los tipos, etc.?

¿Fue útil?

Solución

Puede crear trivialmente su propio escritor que haga lo que quiera. Visite el código para StyledWriter. Los crlf de que no te gusta vienes StyledWriter::Write. Puedes crear tu propia clase de escritor que no tenga esos CRLF.

Si no le importa modificar la biblioteca, cambie el escritor para que funcione como writeValue están protegidos en lugar de privados. Entonces puedes derivar tu propia clase de StyledWriter con un diferente Write función y aún usar los diversos write* Funciona para hacer los detalles de la conversión.

Otros consejos

El proyecto se ha mudado a Github.

Para evitar todas las alimentos de línea, use un StreamWriterBuilder:

Json::Value whatever = ...;
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::string out = Json::writeString(builder, whatever);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top