Qt简单的解析Json数据例子(一)
要解析的json的格式为:
{
"rootpath": "001",
"usernum": 111,
"childdep": [
{
"depid": "11",
"depnum": 20
},
{
"depid": "15",
"depnum": 23
}
]
}
std::map<std::wstring, int> part_depid_num;
//这里是吧json的数据直接写成了字符串的形式来完成
QByteArray data = QByteArray("{\"rootpath\":\"001\",\"usernum\":111,\"childdep\":[{\"depid\":\"11\",\"depnum\":20},{\"depid\":\"15\",\"depnum\":23}]}");
//判断字符串转化为QJsonDocument 是否出现了错误
QJsonParseError jsonError;//Qt5新类
QJsonDocument json = QJsonDocument::fromJson(data, &jsonError);//Qt5新类
if (jsonError.error == QJsonParseError::NoError)
{
if (json.isObject())
{
QJsonObject rootObj = json.object();
QString rootpath;
int rootusernum;
//是否含有key rootpath
if (rootObj.contains("rootpath"))
{
//取出key为rootpath的值
QJsonValue value = rootObj.value("rootpath");
//判断是否是string类型
if (value.isString())
{
rootpath = value.toString();
}
}
if (rootObj.contains("usernum"))
{
//取出key为usernum的值
QJsonValue value = rootObj.value("usernum");
//判断是否为double类型
if (value.isDouble())
{
rootusernum = value.toDouble();
}
}
part_depid_num[rootpath.toStdWString()] = rootusernum;
if (rootObj.contains("childdep"))
{
QJsonValue valueArray = rootObj.value("childdep");
//判断类型是否为array,并且将array遍历出来
if (valueArray.isArray())
{
QJsonArray jsonArray = valueArray.toArray();
for (int i = 0; i < jsonArray.count();i++)
{
QJsonValue childValue = jsonArray[i];
if (childValue.isObject())
{
QString child_depid;
QString child_usernum;
int child_usern;
QJsonObject childObject = childValue.toObject();
if (childObject.contains("depid"))
{
QJsonValue valueJson = childObject.value("depid");
if (valueJson.isString())
{
child_depid = valueJson.toString();
}
}
if (childObject.contains("depnum"))
{
QJsonValue valueJson = childObject.value("depnum");
if (valueJson.isDouble())
{
child_usern = valueJson.toDouble();
}
}
if (child_usernum.isEmpty())
{
part_depid_num[child_depid.toStdWString()] = child_usern;
}
}
}
}
}
}
}
//printf(QString::fromStdWString(part_depid_num.begin()->first).toStdString().c_str());
std::map<std::wstring, int> ::iterator it;
for (it = part_depid_num.begin(); it != part_depid_num.end();it++)
{
cout << QString::fromStdWString(it->first).toStdString().c_str()<<endl;
}
Qt简单的解析Json数据例子(一)的更多相关文章
- Qt解析Json数据
1 JSON数据简介 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范) ...
- Qt QJson解析json数据
Qt QJson解析json数据 //加载根目录文件 void TeslaManageData::loadRootFolderFiles() { QNetworkAccessManager *mana ...
- 通过Gson解析Json数据
Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#s ...
- Java创建和解析Json数据方法(五)——Google Gson包的使用
(五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法: ①toJson():将java对象转化为json数据 ...
- Java创建和解析Json数据方法(四)——json-lib包的使用
(四)json-lib包的使用 既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中 ...
- Java创建和解析Json数据方法(二)——org.json包的使用
(二)org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...
- Java创建和解析Json数据方法——org.json包的使用(转)
org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...
- [系列] Go 如何解析 JSON 数据?
概述 最近掉进需求坑了,刚爬上来,评估排期出现了严重问题,下面三张图很符合当时的心境. 谈需求 估排期 开始干 为啥会这样,我简单总结了下: 与第三方对接. 跨团队对接. 首次用 Go 做项目. 业务 ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
随机推荐
- C语言:总结
1除法运算:两整数相除,结果为整数: 任意浮点数参与的除法运算结果为浮点型.所以pow(16,1/2)=1 pow(16,1.0/2)=4.00 pow(64,1.0/3)=4.00 球的体积v ...
- 【剑指offer】42.和为S的两个数字
42.和为S的两个数字 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 示例: 输入:[1,2,4,7,11 ...
- 理解并掌握Promise的用法
前沿: Promise在处理异步操作非常有用.项目中,与后端进行数据请求的时候经常要用到Promise.我们可以用promise + xhr进行ajax的封装.也可以使用基于promise封装的请求 ...
- 【模拟+排序】花生采摘 luogu-1086
题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". 鲁宾逊先生和多多都很 ...
- 第六篇--MFC美化界面
1.MFC如何设置背景颜色 首先,为对话框添加WM_CTLCOLOR消息,方法为:右击Dialog窗口 --> Class Wizard --> Messages --> WM_CT ...
- Scrapy入门到放弃03:理解settings配置,监控Scrapy引擎
前言 代码未动,配置先行.本篇文章主要讲述一下Scrapy中的配置文件settings.py的参数含义,以及如何去获取一个爬虫程序的运行性能指标. 这篇文章无聊的一匹,没有代码,都是配置化的东西,但是 ...
- Python - dict 字典的多种遍历方式
前置知识 for 循环详解:https://www.cnblogs.com/poloyy/p/15087053.html 使用 for key in dict 遍历字典 可以使用 for key in ...
- ThinkPHP 2.x 任意代码执行漏洞
直接访问 http://192.168.49.2:8080/index.php?s=/index/index/name/$%7B@phpinfo()%7D
- 杭电OJ 输入输出练习汇总
主题 Calculate a + b 杭电OJ-1000 Input Each line will contain two integers A and B. Process to end of fi ...
- HCIA-数据链路层
数据链路层 1.数据的差错检测 |FCS| 2.组帧|解帧 |数据帧帧头 帧尾| 3.标识身份 |MAC地址| 以太网络标准数据链路层的标准 数据链路层不仅仅只有以太网 地域来进行分类 局域网:小型地 ...