Json-cpp - how to initialize from string and get string value? Json-cpp - how to initialize from string and get string value? json json

Json-cpp - how to initialize from string and get string value?


Hello it is pretty simple:

1 - You need a CPP JSON value object (Json::Value) to store your data

2 - Use a Json Reader (Json::Reader) to read a JSON String and parse into a JSON Object

3 - Do your Stuff :)

Here is a simple code to make those steps:

#include <stdio.h>#include <jsoncpp/json/json.h>#include <jsoncpp/json/reader.h>#include <jsoncpp/json/writer.h>#include <jsoncpp/json/value.h>#include <string>int main( int argc, const char* argv[] ){    std::string strJson = "{\"mykey\" : \"myvalue\"}"; // need escape the quotes    Json::Value root;       Json::Reader reader;    bool parsingSuccessful = reader.parse( strJson.c_str(), root );     //parse process    if ( !parsingSuccessful )    {        std::cout  << "Failed to parse"               << reader.getFormattedErrorMessages();        return 0;    }    std::cout << root.get("mykey", "A Default Value if not exists" ).asString() << std::endl;    return 0;}

To compile: g++ YourMainFile.cpp -o main -l jsoncpp

I hope it helps ;)


Json::Reader is deprecated. Use Json::CharReader and Json::CharReaderBuilder instead:

std::string strJson = R"({"foo": "bar"})";Json::CharReaderBuilder builder;Json::CharReader* reader = builder.newCharReader();Json::Value json;std::string errors;bool parsingSuccessful = reader->parse(    strJson.c_str(),    strJson.c_str() + strJson.size(),    &json,    &errors);delete reader;if (!parsingSuccessful) {    std::cout << "Failed to parse the JSON, errors:" << std::endl;    std::cout << errors << std::endl;    return;}std::cout << json.get("foo", "default value").asString() << std::endl;

Kudos to p-a-o-l-o for their answer here: Parsing JSON string with jsoncpp