JSON

jsoncpp 学习

字号+ 作者:H5之家 来源:H5之家 2016-09-18 17:00 我要评论( )

vs2015网络收集的一些JSON的示例 JsonCpp // MyJsonTest.cpp : 定义控制台应用程序的入口点。//#include

vs2015网络收集的一些JSON的示例 JsonCpp // MyJsonTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include fstream#include cassert#include "json/json.h"using namespace std;/*********************************************************

vs2015 网络收集的一些JSON的示例 JsonCpp // MyJsonTest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <fstream> #include <cassert> #include "json/json.h" using namespace std; /************************************************************** 技术博客 技术交流群 群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流 **************************************************************/ void test1() { Json::Value root; Json::FastWriter writer; Json::Value person; person["FileName"] = "test1"; person["fileLength"] = "1987655325452"; // 4G以内文件 person.removeMember("fileLength"); root.append(person); person["FileName"] = "test2"; person["fileLength"] = "1987655325452"; // 4G以内文件 root.append(person); person["FileName"] = "test3"; person["fileLength"] = "1987655325452"; // 4G以内文件 root.append(person); std::string json_file = writer.write(root); ofstream ofs; ofs.open("test1.json", ios::trunc); assert(ofs.is_open()); ofs << json_file; ofs.close(); } int test2() { Json::Reader pJsonParser;; string strJson = "{\"name\":\"tom\",\"sex\":\"男\",\"age\":\"24\",\"friends\":[{\"name\":\"chen\",\"sex\":\"男\"},{\"name\":\"li\",\"sex\":\"女\"}]}"; Json::Value tempVal; if (!pJsonParser.parse(strJson, tempVal)) { cout << "parse error" << endl; return -1; } string name = tempVal["name"].asString(); string sex = tempVal["sex"].asString(); string age = tempVal["age"].asString(); Json::Value friends = tempVal["friends"]; for (int i = 0; i < friends.size(); i++) { cout << friends[i]["name"].asString() << endl; } cout << "name = " << name << " age = " << age << " sex = " << sex << endl; return 0; } void test3() { Json::Value root; Json::Value arrayObj; Json::Value item; Json::FastWriter writer; for (int i = 0; i<10; i++) { item["key"] = i; arrayObj.append(item); //数组项添加 } root["key1"] = "value1"; root["key2"] = "value2"; root["key3"] = 0x100; root["key4"] = true; root["key5"] = "中国人"; item = root["key5"]; root["array"] = arrayObj; std::cout << root.toStyledString(); std::cout << writer.write(root); } void test4() { char* config_doc = "{\"encoding\" : \"UTF-8\",\"plug-ins\" : [\"python\",\"c++\",\"ruby\"],\"indent\" : { \"length\" : 3, \"use_space\" : true }}"; Json::Value root; // will contains the root value after parsing. Json::Reader reader; bool parsingSuccessful = reader.parse(config_doc, root); if (!parsingSuccessful) { // report to the user the failure and their locations in the document. std::cout << "Failed to parse configuration\n"; return; } // Get the value of the member of root named 'encoding', return 'UTF-8' if there is no // such member. std::string encoding = root.get("encoding", "UTF-8").asString(); // Get the value of the member of root named 'encoding', return a 'null' value if // there is no such member. const Json::Value plugins = root["plug-ins"]; for (int index = 0; index < plugins.size(); ++index) // Iterates over the sequence elements. std::cout << plugins[index].asString() << std::endl; std::cout << root["indent"].get("length", 3).asInt() << std::endl; std::cout << root["indent"].get("use_space", true).asBool() << std::endl;; // ... // At application shutdown to make the new configuration document: // Since Json::Value has implicit constructor for all value types, it is not // necessary to explicitly construct the Json::Value object: //root["encoding"] = getCurrentEncoding(); //root["indent"]["length"] = getCurrentIndentLength(); //root["indent"]["use_space"] = getCurrentIndentUseSpace(); Json::StyledWriter writer; // Make a new JSON document for the configuration. Preserve original comments. std::string outputConfig = writer.write(root); // You can also use streams. This will put the contents of any JSON // stream at a particular sub-value, if you'd like. //std::cin >> root["subtree"]; // And you can write to a stream, using the StyledWriter automatically. std::cout << root; } void test5() { Json::Reader reader; Json::Value root; Json::StyledStreamWriter writer; std::string text = "{ \"first\": \"James\", \"last\": \"Bond\", \"nums\": [0, 0, 7] }"; std::ofstream outFile; // Parse JSON and print errors if needed if (!reader.parse(text, root)) { std::cout << reader.getFormatedErrorMessages(); exit(1); } else { // Read and modify the json data std::cout << "Size: " << root.size() << std::endl; std::cout << "Contains nums? " << root.isMember("nums") << std::endl; root["first"] = "Jimmy"; root["middle"] = "Danger"; // Write the output to a file outFile.open("output.json"); writer.write(outFile, root); outFile.close(); } } int main() { test5(); return 0; }

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android学习笔记45之gson解析json

    Android学习笔记45之gson解析json

    2016-09-18 18:01

  • Json学习一(基础概念知识学习)

    Json学习一(基础概念知识学习)

    2016-09-03 15:00

  • Python解析json学习

    Python解析json学习

    2016-09-01 17:00

  • 解析错误富文本json字符串(带双引号)的快速解决方法

    解析错误富文本json字符串(带双引号)的快速解决方法

    2016-08-27 12:00

网友点评