jsoncpp 常用方法,json::value,reader,writer,

本文深入讲解了jsonCpp库的基本用法,包括如何创建、读取和写入JSON数据。介绍了Json::Value、Json::Reader和Json::Writer类的使用方法,以及如何通过不同子类实现快速或格式化的数据输出。
部署运行你感兴趣的模型镜像

1. jsonCpp总所有对象、类名都在namespace json中,使用时只要包含json.h即可。

2. jsonCpp主要包含三种类型的class:valuereaderwrite

(1)Json::Value root;  // 建立一个 json 对象

  • 新建key-value数据:

root["key1"] = Json::Value("value1");         // 新建一个 Key(名为:key1),赋予字符串值:"value1"。

root["key2"] = Json::Value(1);            // 新建一个 Key(名为:key2),赋予数值:1。

root["key3"] = Json::Value(false);              // 新建一个 Key(名为:key3),赋予bool值:false。

  • 获取类型:

Json::ValueType type = root.type();          //可获取 root 的类型。

  • 添加数组:类型数据

root["key_array"].append("string");             // 新建名为:key_array的key,对第一个元素赋值为字符串:"string"。

root["key_array"].append(22);                      // 为数组 key_array 赋值,对第二个元素赋值为:22。

 

(2)Json::Writer为纯虚类,并不能直接使用。需要使用其子类:Json::FastWriter(快,最常用)、Json::StyledWriterJson::StyledStreamWriter

  • Json::FastWriter file;          //输出json数据

cout << file.write(root) << endl;

完整的代码:

#include <json/json.h>


using namespace std;


int main()

{

Json::Value root;

root["key1"] = Json::Value("value1");

root["key2"] = Json::Value(1);

root["key3"] = Json::Value(false);

root["key_array"].append("string");

root["key_array"].append(22);



Json::FastWriter file;

cout << file.write(root) << endl;

}


输出结果为:

 

  • Json::StyledWriter  file;      //输出有格式的json数据

cout << file.write(root) << endl;

完整代码:

#include <json/json.h>

using namespace std;


int main()

{

Json::Value root;

root["key1"] = Json::Value("value1");

root["key2"] = Json::Value(1);

root["key3"] = Json::Value(false);

root["key_array"].append("string");

root["key_array"].append(22);



Json::StyledWriter  file;

cout << file.write(root) << endl;

}

输出结果:

(3)Json::Reader   用于读取json数据的,

  代码:

#include <json/json.h>

#include <fstream>

using namespace std;

ifstream strJsonContent("jsontext.json", ios::binary);             //读取jsontext.json的json文件,strJsonContent也可以为str类型

Json::Reader reader;

Json::Value root;

if (reader.parse(strJsonContent, root))                           //解析strJsonContent文件

{

Json::Value::Members types = root.getMemberNames();            //得到子节点

for (Json::Value::Members::iterator it = types.begin(); it != types.end(); it++)     //遍历子节点

{

Json::Value versions = root[*it];

for (unsigned int i=0; i < versions.size(); i++) {

v.push_back(versions[i].asString());

}

}

return v;

}

 

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值