diff options
Diffstat (limited to 'example/readFromString/readFromString.cpp')
-rw-r--r-- | example/readFromString/readFromString.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/example/readFromString/readFromString.cpp b/example/readFromString/readFromString.cpp new file mode 100644 index 0000000..c27bbd5 --- /dev/null +++ b/example/readFromString/readFromString.cpp @@ -0,0 +1,37 @@ +#include "json/json.h" +#include <iostream> +/** + * \brief Parse a raw string into Value object using the CharReaderBuilder + * class, or the legacy Reader class. + * Example Usage: + * $g++ readFromString.cpp -ljsoncpp -std=c++11 -o readFromString + * $./readFromString + * colin + * 20 + */ +int main() { + const std::string rawJson = R"({"Age": 20, "Name": "colin"})"; + const auto rawJsonLength = static_cast<int>(rawJson.length()); + constexpr bool shouldUseOldWay = false; + JSONCPP_STRING err; + Json::Value root; + + if (shouldUseOldWay) { + Json::Reader reader; + reader.parse(rawJson, root); + } else { + Json::CharReaderBuilder builder; + const std::unique_ptr<Json::CharReader> reader(builder.newCharReader()); + if (!reader->parse(rawJson.c_str(), rawJson.c_str() + rawJsonLength, &root, + &err)) { + std::cout << "error" << std::endl; + return EXIT_FAILURE; + } + } + const std::string name = root["Name"].asString(); + const int age = root["Age"].asInt(); + + std::cout << name << std::endl; + std::cout << age << std::endl; + return EXIT_SUCCESS; +} |