标签:json
前言:
使用官方json.cpp解析库解析json文件
#include <json\json.h> #pragma comment(lib, "lib_json.lib") /************************/ /*json写操作*/ /************************/ void json_write_test() { Json::Value json_temp; json_temp["name"] = Json::Value("测试名字"); json_temp["age"] = Json::Value(17); json_temp["job"] = Json::Value("c++工程师"); Json::Value root; // 表示整个 json 对象 root["key_string"] = Json::Value("value_string"); // 赋予字符串值:"value_string"。 root["key_number"] = Json::Value(12345); // 赋予数值:12345。 root["key_boolean"] = Json::Value(false); // 赋予bool值:false。 root["key_double"] = Json::Value(12.345); // 赋予 double 值:12.345。 root["key_object"] = json_temp; // 赋予 json::Value 对象值。 root["key_array"].append("array_string"); // 类型为数组,对第一个元素赋值为字符串:"array_string"。 root["key_array"].append(1234); // 为数组 key_array 赋值,对第二个元素赋值为:1234。 Json::ValueType typeone = root.type(); // 获得 root 的类型,此处为 objectValue 类型。 Json::ValueType typetwo = root["key_number"].type();// 获得 root 中某一个字段的类型 Json::FastWriter json_write; std::string str_json = json_write.write(root); // 获得 root 的内容 std::string num_json = json_write.write(root["key_array"]); //获得 root中某个字段 的内容 Json::StyledWriter json_stylewrite; std::string str_style_json = json_stylewrite.write(root);//获取root的内容并且格式化输出 std::string arr_style_json = json_stylewrite.write(root["key_array"]); int x=1; } /************************/ /*json读操作*/ /************************/ void json_read_test() { //读json字符串 std::string str_json; str_json.assign("{\"name\": \"weir\",\"id\": 10,\"job\": \"engineer\",\"pay\": 123.4}"); Json::Value json_read; Json::Reader reader; reader.parse(str_json.c_str(), json_read); std::string strJob = json_read["job"].asString(); //读json文件 std::string str_file_path; str_file_path.assign("C://test.json"); Json::Value json_read_file; Json::Reader reader_file; std::ifstream is; is.open(str_file_path.c_str(), std::ios::binary); if (reader_file.parse(is, json_read_file)) { std::string code; if (!json_read_file["files"].isNull())//访问节点是否为空 { code = json_read_file["uploadid"].asString();//取节点内容 code = json_read_file.get("uploadid", "null").asString(); //获取files的数组个数 int arr_file_size = json_read_file["files"].size(); for (int i = 0; i < arr_file_size; i++) { Json::Value val_image = json_read_file["files"][i]["images"]; int image_size = val_image.size(); for(int j = 0; j < image_size; ++j) { std::string type = val_image[j]["type"].asString(); std::string url = val_image[j]["url"].asString(); } } } } //把从文件中读取出来的内容格式化为json字符串 Json::StyledWriter json_stylewrite; std::string str_style_json = json_stylewrite.write(json_read_file); is.close(); } // test.json文件内容 // { // "id": "0001", // "code": "0", // "msg": "", // "files": // [ // { // "code": "0", // "msg": "", // "filename": "1.jpg", // "filesize": "1000", // "width": "1024", // "height": "682", // "images": // [ // { // "url": "qq.com", // "type": "large", // "width": "720", // "height": "479" // }, // { // "url": "qq.com", // "type": "main", // "width": "200", // "height": "133" // } // ] // } // ] // } //在json中添加内容 void json_add_data_test() { std::string str_file_path; str_file_path.assign("C://test.json"); Json::Value json_read_file; Json::Reader reader_file; std::ifstream is; is.open(str_file_path.c_str(), std::ios::binary); reader_file.parse(is, json_read_file); Json::Value arrayObj; // 构建对象 Json::Value new_item, new_item1; new_item["date"] = "2011-12-28"; new_item1["time"] = "22:30:36"; arrayObj.append(new_item); // 插入数组成员 arrayObj.append(new_item1); // 插入数组成员 int file_size = json_read_file["files"].size(); for(int i = 0; i < file_size; ++i) { json_read_file["files"][i]["exifs"] = arrayObj; // 插入原json中 json_read_file["files"][i]["name"] = "weir"; } //把从文件中读取出来的内容格式化为json字符串 Json::StyledWriter json_stylewrite; std::string str_style_json = json_stylewrite.write(json_read_file); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:json
原文地址:http://blog.csdn.net/qingzai_/article/details/47778819