jsoncpp是针对c++语言的json解析库,性能虽然不是最强,但足够也足够快且好用, 使用这个库写出来的代码也比较好看
jsoncpp github 源码地址:https://github.com/open-source-parsers/jsoncpp
为了方便未来使用,特写此demo,demo主要针对string字符串的读写操作,demo经过本地测试验证通过
头文件与声明
#include <json.h>
#include <iostream>
#include <string>
using namespace Json;
using namespace std;
写
void TestWriteJson()
{
FastWriter writ;
Value root;
root["action"] = "run";
root["number"] = 1;
root["data"] = 123;
// 创建json数组
Value _array;
for(int i = 0; i < 10; ++i)
{
Value arr;
arr["num"] = i;
arr["code"] = i*i + 1;
_array.append(arr);
}
root["array"] = _array;
cout << writ.write(root);
}
结果:
读
void TestReadJson()
{
string strTest = "{\"action\":\"run\",\"number\":1,\"data\":123,"
"\"array\":[{\"code\":1,\"num\":\"jfsifjs\"},{\"code\":2,\"num\":\"fjisfjs\"}]}";
Reader reader;
Value root;
if (!reader.parse(strTest, root))
{
cout << "paser false\n";
}
// 解析
string _action = root["action"].asString();
int _number = root["number"].asInt();
int _root = root["data"].asInt();
cout << _action << _number << _root << endl;
// 解析数组
Value _array = root["array"];
cout << _array << endl;
if(_array.isArray())
{
for(int i = 0; i < _array.size(); ++i)
{
int _code = _array[i]["code"].asInt();
string _num = _array[i]["num"].asString();
cout << "array " << _code << " " << _num << endl;
}
}
}
结果: