C++调用JsonCpp库,json简单操作以及常用函数
本文章记录作者对json操作的一点心得。
目录
- 准备
- 项目配置
- 代码
- json格式说明
- 运用
- 初始化
- 调用时碰到的错误
准备
本文选择第三方库JsonCpp来解析json
下载地址:https://sourceforge.net/projects/jsoncpp/
JsonCpp主要包含三种类型的class:Value Reader Writer。
jsoncpp中所有对象、类名都在namespace json中,包含json.h即可。
项目配置
包含路径。
附加库
下面是 包含头文件
。
#include "json\json.h"
代码
json格式说明
下面是 json对象
。
"var":
{"first":{"first_one":11,"first_two":true},
"second":{"second_one":"21","second_two": [{"firstName": "Bill","lastName": "Gates"},{"firstName": "George","lastName": "Bush"},{"firstName": "Thomas","lastName": "Carter"}]}
}
属性first是个对象,包含属性first_one(值:int类型11)和first_two(值:bool类型true),
属性second也是个对象,这个对象由包含属性second_one(值:21)和属性second_two,
属性second_two又是一个数组包含值。
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
运用
下面是 json操作
。
void readJson() {string strValue;//该字符串为上述json对象Json::Reader reader;Json::Value value;if (reader.parse(strValue, value))//strValue字符串转value的json对象{ std::string out = value["var"].asString();//var的json对象转换为string类型字符串std::cout << out << std::endl;//显示var对象内容//second_two对象初始化secondObj if(value["var"]["first"]["first_two"].asBool()==TRUE){const Json::Value second_twoObj = value["second"]["second_two"];for (unsigned int i = 0; i < arrayObj.size(); i++){ if (!second_twoObj [i].isMember("firstName")) continue;out = second_twoObj [i]["firstName"].asString();std::cout << out;if(!second_twoObj [i]["lastName"].isNull())//判断是否为空{second_twoObj [i].removeMember("lastName");}if (i != (second_twoObj .size() - 1)) std::cout << std::endl;} } }
}
以上是对json类型进行操作,
reader.parse(strValue, value),把strValue的json格式字符串转换为json类,
asString()/asBool()/asInt()/asCString()...把json键值对转换为对应类型
isMember() 判断是否有该键值对。
removeMember() 去掉该键值对。
初始化
“var”:
{
“first”:
{“first_one”:11,“first_two”:true},
“second”:
{“second_one”:“21”,
“second_two”:
[
{
“firstName”: “Bill”,
“lastName”: “Gates”
},
{
“firstName”: “George”,
“lastName”: “Bush”
},
{
“firstName”: “Thomas”,
“lastName”: “Carter”
}
]
}
}
void writeJson() {Json::Value second_two;Json::Value first;Json::Value var;//初始化second_two名json数组second_two[1]["firstName"] = Json::Value("Bill");second_two[1]["lastName"] = Json::Value("Gates");second_two[2]["firstName"] = Json::Value("George");second_two[2]["lastName"] = Json::Value("Bush");second_two[3]["firstName"] = Json::Value("Thomas");second_two[3]["lastName"] = Json::Value("Carter");//初始化second名json类second["second_two"]=second_two;second["second_one"]=Json::Value("21");//first["first_one"]=Json::Value(11);//first["first_two"]=Json::Value(TRUE);//var["first"]=first;var["second"]=second;var.toStyledString();std::string out = root.toStyledString();std::cout << out << std::endl;
}
初始化json对象,创建键值对。
调用时碰到的错误
Json::Value().asString()
//时只能单个键值对并不能
std::string a =var["first"].asString();
//这种用法是错误的,只能提取单个键值对
这里要注意Json::Value()括号内的字符串不能为CString,必须为string类型。
C++调用JsonCpp库,json简单操作以及常用函数相关推荐
- Dictionary作为数据源绑定,调用c++库中返回为BYTE*的函数,listView项排序
最近在做一个电子档案管理的项目.现在还处于初期,只是做一个简单demo拿去跟客户演示.至于最后谈不谈得下来,到底做不做,反正我是不看好,但没因为这样就马马虎虎.草草了事.这个项目算是b/s加c/s混合 ...
- tensorFlow基础操作及常用函数
tensorFlow基础操作及常用函数 1. 安装Tensorflow 2. TensorFlow基本操作 3. TensorFlow常用函数 3.1 常用矩阵创建方式 3.2 高斯初始化及洗牌操作 ...
- C++调用JSON-CPP库实现JSON字符串解析
1.下载JSON-CPP库https://sourceforge.net/projects/jsoncpp/ 2.解压jsoncpp-src-0.5.0.tar 3.打开VS2010新建一个名为tes ...
- c#3.0关于JSON简单操作的实用帮助类(泛型实现)
关于json的操作,网上一搜一大把.避免重复造轮子,整理发布一个笔者在项目开发中经常用到的一个json实用帮助类,泛型实现,非常方便.不废话了,贴代码: 1.json操作的帮助类: Code usin ...
- python文件函数_Python之文件操作及常用函数
常见全局函数: 1.dir(nameStr): 常见系统变量: 1.sys.path:一个包含Python自动搜索文件的路径或目录的列表.可使用列表的操作方法修改.增加默认搜索路径. 一.模块 1.创 ...
- 数据处理库Pandas(简单操作)
1.pandas介绍 1.什么是pandas pand - panel data为面板数据 as - analysis为分析 综上所述为面板数据 ...
- TortoiseSVN搭建本地版本库及简单操作使用
TortoiseSVN是windows上一款著名的版本控制软件,对于我们管理自己的代码,特别是对一个团队来说,非常重要. 本文探讨的是如何搭建本地的版本库. (1)安装TortoiseSVN之后需要创 ...
- 前端HTML调用jQuery库,属性操作:更换图片、添加字体样式(前端:HTML搭配jQuery系列教程六)
属性操作:更换图片.改变字体样式 1.更换图片: 在jQuery中,我们可以使用attr()方法来获取元素的某一个HTML属性值. 语法: $().attr("属性名") 说明:获 ...
- 2022 新版本c++安装opencv库的简单操作教程
近期选修了计算机视觉 的课程,正好更新一下最新的cpp下的opencv库的教程. 废话少说干货降临: 1. 网站下载解压对应opencv库 这里我们推荐官网下载:https://opencv.org/ ...
最新文章
- BeanShell使用json.jar包处理Json数据
- ORACLE分区表详解
- python与办公自动化-用 Python 自动化办公,我与大神之间的差距一下就
- 【图像】直方图均衡化
- nodejs操作mongodb增删改查
- 数据分割-并查集+set
- 科目三考试里面的会车,调头,靠边停车通过标准
- 绝大部分人根本没有职业素养
- js高级学习笔记-14-从函数运行和内存角度理解闭包
- CCS6.2.0 安装步骤详解
- 基于SpringBoot的行影旅行网
- 小程序容器化:基于uni-app的Android小程序开发
- YOLO学习笔记4——YOLOV2详解+论文解读
- [4G5G基础学习]:L3 RRC层概述与总体架构、ASN.1消息、无线承载SRB, DRB、终端三种状态、MIB, SIB,NAS消息类型
- anime+tv+android,Anime TV Watch - KissAnime
- 领航云计算发展风向标,亚马逊云科技的这些硬核布局值得关注
- postman的批量传送数据和接口关联
- 第一届『Citric杯』NOIP提高组模拟赛 题解
- Markdown 更改字体颜色
- 【K8S】ctr和crictl的区别