c++ stdstring jsoncpp

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?