¿Cómo obtener los valores de JSONCPP como cadenas?
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.?
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);