当前位置: 首页 > 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
http://www.dtcms.com/a/183511.html

相关文章:

  • 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
  • GD32H7复位后程序调用函数时间增加
  • 第八周作业
  • 基于STM32的LCD信号波形和FFT频谱显示
  • “睿思 BI” 系统介绍
  • 自学嵌入式 day 17- c语言-第11章 结构体与共用体 第12章 位运算
  • 批量导出docker镜像
  • 如何解决 PowerShell 显示 “此系统上禁用了脚本运行” 的问题
  • 在资源受限设备上实现手势识别:基于包络EMG数据和实时测试的Tiny-ML方法
  • 【Linux】用户管理
  • Dify-1.3.1介绍及部署镜像下载