当前位置: 首页 > news >正文

Linux--JsonCpp

1.JsonCpp 简介

JsonCpp 是一个用于 C++ 的 JSON 解析和生成库,支持 JSON 数据的读写、解析和序列化。它提供了简单的 API 来操作 JSON 对象、数组、字符串、数字等类型,是 C++ 开发中处理 JSON 数据的常用工具。

核心功能与类

JsonCpp 主要包含以下核心类:

  1. Json::Value:表示 JSON 中的值(对象、数组、字符串、数字等)。
  2. Json::Reader:用于解析 JSON 文本,将字符串转换为 Json::Value
  3. Json::Writer(及其子类):用于将 Json::Value 序列化为 JSON 字符串。
  4. 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.注意事项

  1. 错误处理:解析 JSON 时务必检查返回值(如 reader.parse() 的返回值)。
  2. 类型安全:访问 JSON 值时需确认类型(如使用 isString()isInt() 等)。
  3. 性能:处理大量 JSON 数据时,推荐使用 Json::StreamWriter 而非 Json::FastWriter

相关文章:

  • CDGP主观题题库与范例解答
  • 【深度学习-Day 8】让数据说话:Python 可视化双雄 Matplotlib 与 Seaborn 教程
  • Qt开发经验 --- 避坑指南(11)
  • 数孪实战笔记(1)数字孪生的含义、应用及技术体系
  • powerbuilder9.0中文版
  • 23、Next.js:时空传送门——React 19 全栈框架
  • 选对第三方软件测试公司,项目验收成功率提升90%
  • 滑动窗口,438找出字符串中所有字母的异位词
  • Linux:线程同步与互斥
  • JAVA自动装箱拆箱
  • make和makefile的使用,以及写一个简单的进度条程序
  • DAMA第10章深度解析:参考数据与主数据管理的核心要义与实践指南
  • 挪度半身复苏小安妮模型QCPR成人半身急救心肺复苏模拟人
  • 使用python脚本连接SQL Server数据库导出表结构
  • “AI+城市治理”智能化解决方案
  • Profinet转CanOpen协议转换网关,破解工业设备“语言障碍”
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 08.阴影
  • Vue.js框架的优缺点
  • 【免费工具】图吧工具箱2025.02正式版
  • Discriminative and domain invariant subspace alignment for visual tasks
  • 专访|西蒙·斯特朗格:以“辞典”的方式讲述二战家族史
  • 梅花奖在上海|“我的乱弹我的团”,民营院团首次入围终评
  • 法治日报:炮制师生日常剧本,校园怎么成了短视频流量秀场?
  • 上海“量子城市”先导应用场景落地曹杨社区,提供哪些服务?
  • 宜昌全域高质量发展:机制创新与产业重构的双向突围
  • 佩斯科夫:俄会考虑30天停火提议,但试图对俄施压无用