C++ 使用Json封装数据和解析数据
2017-08-30 12:06
567 查看
使用C++和别的语言做交互比较常用的一种数据操作方式就是json。可以到GitHub上下载对应C++的json库源码,我自己下了一套之前的版本,可以正常使用。jsoncpp-src
编译出来的库名:json_vc71_libmtd.lib(debug) | json_vc71_libmt.lib(release)
需要包含的头文件: jsoncpp-src(对应源码)/include/json (该目录下所有文件)
调用库方式
封装json数据为string
解析json数据
json数组操作
封装
解析
编译出来的库名:json_vc71_libmtd.lib(debug) | json_vc71_libmt.lib(release)
需要包含的头文件: jsoncpp-src(对应源码)/include/json (该目录下所有文件)
调用库方式
#include "json/json.h" #ifdef _DEBUG #pragma comment(lib,"./lib/json_vc71_libmtd.lib") #else #pragma comment(lib,"./lib/json_vc71_libmt.lib") #endif
封装json数据为string
std::string DataToJson() { Json::FastWriter writerinfo; Json::Value writevalueinfo; writevalueinfo["id"]=123; writevalueinfo["time"]="2017.08.30 00:00:00"; Json::Value writedata; writedata["count"] = 1; writedata["name"] = "cpp"; writevalueinfo["data"]=writedata; std::string strEmail = writerinfo.write(writevalueinfo); return strEmail; } 示例json: { "data": { "count": 1, "name": "cpp" }, "id": 123, "time": "2017.08.30 00:00:00" }
解析json数据
void TranslateJson(const string strData) { // 解析json用Json::Reader Json::Reader *readerinfo = new Json::Reader(Json::Features::strictMode()); // Json::Value是一种很重要的类型,可以代表任意类型。如int, string, object, array... Json::Value root; if (readerinfo->parse(strData, root)) { if (root["id"].isInt()) { int nID = root["id"].asInt(); } if (root["time"].isString()) { std::string strTime = root["time"].asString(); } if (root["data"]["count"].isInt()) { int nDataCount = root["data"]["count"].asInt(); } if (root["data"]["name"].isString()) { std::string strDataName = root["data"]["name"].asString(); } } ::delete readerinfo; readerinfo = NULL; }
json数组操作
封装
Json::Value arrayObj; // 构建对象 for (int i = 0; i < 3; i++) { Json::Value new_item; new_item["id"] = i; new_item["name"] = "test"; arrayObj.append(new_item); // 插入数组成员 } 示例json: [ { "id": 0, "name": "test" },{ "id": 1, "name": "test" }, { "id": 2, "name": "test" } ] arrayObj.append(new_item); 改为 arrayObj["array"].append(new_item); 示例json: { "array": [ { "id": 0, "name": "test" }, { "id": 1, "name": "test" }, { "id": 2, "name": "test" } ] }
解析
void TranslateJson(const string strData) { // 解析json用Json::Reader Json::Reader *readerinfo = new Json::Reader(Json::Features::strictMode()); // Json::Value是一种很重要的类型,可以代表任意类型。如int, string, object, array... Json::Value root; if (readerinfo->parse(strData, root)) { //arrayObj.append(new_item); if (root.isArray()) { int nArraySize = root.size(); for (int i=0; i<nArraySize; i++) { int nID = root[i]["id"].asInt(); std::string strName = root[i]["name"].asString(); } } // arrayObj["array"].append(new_item); if (root["array"].isArray()) { int nArraySize = root["array"].size(); for (int i=0; i<nArraySize; i++) { int nID = root["array"][i]["id"].asInt(); std::string strName = root["array"][i]["name"].asString(); } } } ::delete readerinfo; readerinfo = NULL; }
相关文章推荐
- 【C++】JSON数据解析——jsoncpp的使用(上)
- 使用JsonCPP解析JSON数据 C++
- 【C++】JSON数据解析——jsoncpp的使用
- 学习笔记 Tianmao 篇 使用简单封装后的自定义OkHttp 获取json被GSON解析后的数据
- C++使用 jsoncpp 解析json数据
- 【C++】JSON数据解析——jsoncpp的使用(下)
- C++之使用jsoncpp解析json数据
- 【C++】JSON数据解析——jsoncpp的使用
- C++使用Jsoncpp解析Json数据
- 【C++】JSON数据解析——jsoncpp的使用
- Android中使用Gson解析JSON数据
- Android使用自带JSONObject解析JSON数据
- Android中的httpClient使用及JSON格式数据的解析方法
- 如何使用JSON Framework库解析与生成json数据(iphone网络篇二)
- JavaScript使用json2.js对json数据进行解析
- Android中使用Gson解析JSON数据
- 使用 C++ 处理 JSON 数据交换格式
- 如何使用JSON Framework库解析与生成json数据
- 使用 C++ 处理 JSON 数据交换格式
- flex中使用corelib ActionScript 3 Library sdk包解析json数据