当前位置: 首页 > 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.xdnf.cn/news/380089.html

相关文章:

  • 【C++】内存管理
  • Lettuce 节点刷新、连接优化与 Spring 升级适配全解析:从环境约束到生产验证
  • printf调试时候正常,运行时打印不出来
  • spring响应式编程系列:异步消费数据
  • springboot3+vue3融合项目实战-大事件文章管理系统-更新用户信息
  • MGP-STR:用于场景文本识别的多粒度预测
  • 【Vulkan 入门系列】创建和配置描述符集,创建同步对象(九)
  • 跟我学C++中级篇——STL中的删除对比
  • C++ learning day 02
  • 常见的算法介绍
  • 人脸真假检测:SVM 与 ResNet18 的实战对比
  • Java单例模式总结
  • 【Linux 系统调试】系统内存越界调试利器Electric Fence详解
  • waterfall与Bidding的请求机制
  • Day20打卡-奇异值SVD分解
  • Python序列化的学习笔记
  • 基于PE环境搭建及调试S32K312
  • Lua—元表(Metatable)
  • 怎样使自己处于高能量状态
  • Discriminative and domain invariant subspace alignment for visual tasks
  • JVM——即时编译器的中间表达形式
  • MYSQL 索引与数据结构笔记
  • 【大数据技术-HBase-关于Hmaster、RegionServer、Region等组件功能和读写流程总结】
  • 【Linux】线程POSIX信号量
  • JDBC工具类
  • c#建筑行业财务流水账系统软件可上传记账凭证财务管理系统签核功能
  • 代码随想录算法训练营第三十七天
  • win10-启动django项目时报错
  • ndk.symlinkdir - 在 Android Studio 3.5 及更高版本中,创建指向 NDK 的符号链接
  • 关于数据库查询速度优化