Linux--JsonCpp
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
。