1*44844408SAndroid Build Coastguard Worker #include "json/json.h" 2*44844408SAndroid Build Coastguard Worker #include <iostream> 3*44844408SAndroid Build Coastguard Worker #include <memory> 4*44844408SAndroid Build Coastguard Worker /** 5*44844408SAndroid Build Coastguard Worker * \brief Parse a raw string into Value object using the CharReaderBuilder 6*44844408SAndroid Build Coastguard Worker * class, or the legacy Reader class. 7*44844408SAndroid Build Coastguard Worker * Example Usage: 8*44844408SAndroid Build Coastguard Worker * $g++ readFromString.cpp -ljsoncpp -std=c++11 -o readFromString 9*44844408SAndroid Build Coastguard Worker * $./readFromString 10*44844408SAndroid Build Coastguard Worker * colin 11*44844408SAndroid Build Coastguard Worker * 20 12*44844408SAndroid Build Coastguard Worker */ main()13*44844408SAndroid Build Coastguard Workerint main() { 14*44844408SAndroid Build Coastguard Worker const std::string rawJson = R"({"Age": 20, "Name": "colin"})"; 15*44844408SAndroid Build Coastguard Worker const auto rawJsonLength = static_cast<int>(rawJson.length()); 16*44844408SAndroid Build Coastguard Worker constexpr bool shouldUseOldWay = false; 17*44844408SAndroid Build Coastguard Worker JSONCPP_STRING err; 18*44844408SAndroid Build Coastguard Worker Json::Value root; 19*44844408SAndroid Build Coastguard Worker 20*44844408SAndroid Build Coastguard Worker if (shouldUseOldWay) { 21*44844408SAndroid Build Coastguard Worker Json::Reader reader; 22*44844408SAndroid Build Coastguard Worker reader.parse(rawJson, root); 23*44844408SAndroid Build Coastguard Worker } else { 24*44844408SAndroid Build Coastguard Worker Json::CharReaderBuilder builder; 25*44844408SAndroid Build Coastguard Worker const std::unique_ptr<Json::CharReader> reader(builder.newCharReader()); 26*44844408SAndroid Build Coastguard Worker if (!reader->parse(rawJson.c_str(), rawJson.c_str() + rawJsonLength, &root, 27*44844408SAndroid Build Coastguard Worker &err)) { 28*44844408SAndroid Build Coastguard Worker std::cout << "error" << std::endl; 29*44844408SAndroid Build Coastguard Worker return EXIT_FAILURE; 30*44844408SAndroid Build Coastguard Worker } 31*44844408SAndroid Build Coastguard Worker } 32*44844408SAndroid Build Coastguard Worker const std::string name = root["Name"].asString(); 33*44844408SAndroid Build Coastguard Worker const int age = root["Age"].asInt(); 34*44844408SAndroid Build Coastguard Worker 35*44844408SAndroid Build Coastguard Worker std::cout << name << std::endl; 36*44844408SAndroid Build Coastguard Worker std::cout << age << std::endl; 37*44844408SAndroid Build Coastguard Worker return EXIT_SUCCESS; 38*44844408SAndroid Build Coastguard Worker } 39