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:

cpp 复制代码
#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。
相关推荐
chenbingjie_c6 小时前
C++ 进阶核心知识点总结:模板、内存分区、new/delete、内存池
开发语言·c++
YoungStudyAI8 小时前
QA的下一个自动化阶段,可能不是再写更多脚本,而是设计测试Agent
运维·自动化
Frank_refuel8 小时前
【C++】Json库介绍和使用
c++
重生之小比特8 小时前
【C++进阶】map和set
java·开发语言·c++
筝筝ba8 小时前
openBMC功耗封顶GUI测试
服务器
分布式存储与RustFS9 小时前
纠删码到底吃掉了多少容量:EC:4、EC:8 的利用率与容错怎么算
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
遇见小修修9 小时前
3步解决打印机0x00000709报错 ,广州深圳程序员可自行排查
运维·打印机·维修·打印机报错·打印机运维·打印机故障自查
知识分享小能手9 小时前
C++ 学习教程,从入门到精通,C++对象和类 — 详细知识点总结(10)
开发语言·c++·学习
顺顺 尼9 小时前
linux 进程信号(上)
linux·c++·算法
niuTaylor9 小时前
飞腾 FT-2000/4 Ubuntu 内存卡 / NVMe SSD 系统制作完整指南
linux·服务器·人工智能·驱动开发·单片机