1.JsonCpp 简介
JsonCpp 是一个用于 C++ 的 JSON 解析和生成库,支持 JSON 数据的读写、解析和序列化。它提供了简单的 API 来操作 JSON 对象、数组、字符串、数字等类型,是 C++ 开发中处理 JSON 数据的常用工具。
核心功能与类
JsonCpp 主要包含以下核心类:
Json::Value:表示 JSON 中的值(对象、数组、字符串、数字等)。Json::Reader:用于解析 JSON 文本,将字符串转换为Json::Value。Json::Writer(及其子类):用于将Json::Value序列化为 JSON 字符串。Json::StreamWriter:更高效的流式输出工具。
2.Json底层类:
Json::Value

Json::Writer:

Json::Reader:

3.Json简单的Test:
#include<iostream>
#include<memory>
#include<json/json.h>
#include<sstream>
using namespace std;
int main()
{
const char* name="hush";
int age=23;
float score[]={77.5,81,100};
Json::Value root;
root["姓名"]=name;
root["年龄"]=age;
root["成绩"].append(score[0]);
root["成绩"].append(score[1]);
root["成绩"].append(score[2]);
//现在已经放内容放进Json了,开始写:也就是序列化,
Json::StreamWriterBuilder swb;
unique_ptr<Json::StreamWriter> sw(swb.newStreamWriter());
stringstream ss;
sw->write(root,&ss);
//cout<<ss.str()<<endl;
//用Reader就是反序列化
Json::Value root1;
Json::CharReaderBuilder crb;
unique_ptr<Json::CharReader> cr(crb.newCharReader());
string err;
bool ret=cr->parse(ss.str().c_str(),ss.str().c_str()+ss.str().size(),&root1,&err);
// if(ret==false)
// {
// cerr<<"json fail"<<endl;
// }
cout<<"Parse Returned: "<<(ret?"Success":"Fail")<<endl;
cout<<root1["姓名"].asString()<<endl;
return 0;
}
4.注意事项
- 错误处理:解析 JSON 时务必检查返回值(如
reader.parse()的返回值)。 - 类型安全:访问 JSON 值时需确认类型(如使用
isString()、isInt()等)。 - 性能:处理大量 JSON 数据时,推荐使用
Json::StreamWriter而非Json::FastWriter。



![[git]如何关联本地分支和远程分支](https://i-blog.csdnimg.cn/direct/a71a48c813934c7bb99f597aed9e93dc.png)















![通过user-agent来源判断阻止爬虫访问网站,并防止生成[ error ] NULL日志](https://i-blog.csdnimg.cn/direct/4f5f77efeb40487fbfa960dac1829d25.png)