c++ - ¿Convertir un Json:: Value a std:: string?
stdstring jsoncpp (3)
Puedes usar un Json::Writer para hacer exactamente esto, ya que asumo que quieres guardarlo en algún lugar para que no desees una salida legible por humanos, lo mejor sería usar un Json::FastWriter y luego puedes llamar al write
método con el parámetro de su Json::Value (es decir, su raíz) y luego simplemente devuelve una std::string
Json::Value así:
Json::FastWriter fastWriter;
std::string output = fastWriter.write(root);
Estoy usando JsonCpp para construir un objeto JSON. Una vez que se construye el objeto, ¿hay alguna manera de que pueda obtener el objeto como una std::string
?
Si su Json::value
es de tipo cadena, por ejemplo, "barra" en el siguiente json
{
"foo": "bar"
}
Puede usar Json::Value.asString
para obtener el valor de la bar
sin comillas adicionales (que se agregarán si utiliza StringWriterBuilder
). Aquí hay un ejemplo:
Json::Value rootJsonValue;
rootJsonValue["foo"] = "bar";
std::string s = rootJsonValue["foo"].asString();
std::cout << s << std::endl; // bar
Json::Writer
está en desuso y Json::StreamWriterBuilder
debe Json::StreamWriterBuilder
en su lugar, como se indica en la documentación de Json::Writer
.
Json::writeString
escribe en una cadena de caracteres y luego devuelve una cadena:
Json::Value json = ...;
Json::StreamWriterBuilder builder;
builder["indentation"] = ""; // If you want whitespace-less output
const std::string output = Json::writeString(builder, json);
Felicitaciones a la respuesta de cdunn2001 aquí: ¿Cómo obtener los valores de JsonCPP como cadenas?