aboutsummaryrefslogtreecommitdiff
path: root/example/readFromString/readFromString.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'example/readFromString/readFromString.cpp')
-rw-r--r--example/readFromString/readFromString.cpp37
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;
+}