C++之RapidJSON解析json数据
RapidJSON 是一个 C++ 的 JSON 解析器及生成器。
JSON文本:
//document.json
{"name":"xiaoming","gender":"boy","hobby":["足球","篮球","电影"],"socre":{"数学":91.5,"英语":96.0,"语文":95.5},"lover":{"name":"xiaohong","gender":"girl","hobby":["画画","跳舞","唱歌"],"score":{"数学":78.5,"英语":90.0,"语文":89.0}}}
由于复制的过程中,json文本可以出现错误,可以用将json文本复制到JSON在线编辑器验证一下。
解析代码:
#include<string>
#include<fstream>
#include<iostream>
#include"document.h"
using namespace std;int main () {std::ifstream t("./document.json");std::string str((std::istreambuf_iterator<char>(t)),std::istreambuf_iterator<char>());rapidjson::Document document;document.Parse(str.c_str());rapidjson::Value::ConstMemberIterator iter = document.FindMember("name");if(iter != document.MemberEnd()){cout << "name : " << iter->value.GetString() << endl;}iter = document.FindMember("gender");if(iter != document.MemberEnd()){cout << "gender : " << iter->value.GetString() << endl;}if(document.HasMember("hobby")){cout << "hobby : " << endl;const rapidjson::Value& childValue = document["hobby"];for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){cout << " " << childValue[i].GetString() << endl;}}if(document.HasMember("score")){cout << "score : " << endl;const rapidjson::Value& childIter = document["score"];for(rapidjson::Value::ConstMemberIterator it = childIter.MemberBegin(); it != childIter.MemberEnd(); ++it){cout << " " << it->name.GetString() << " : " << it->value.GetDouble() << endl;}}if(document.HasMember("lover")){cout << "lover : " << endl;const rapidjson::Value& chileValue = document["lover"];rapidjson::Value::ConstMemberIterator chileIter = chileValue.FindMember("name");if(chileIter != chileValue.MemberEnd()){cout << " " << "name : " << chileIter->value.GetString() << endl;}chileIter = chileValue.FindMember("gender");if(chileIter != chileValue.MemberEnd()){cout << " " << "gender : " << chileIter->value.GetString() << endl;}if(chileValue.HasMember("hobby")){cout << " " << "hobby : " << endl;const rapidjson::Value& chile2Value = chileValue["hobby"];for(rapidjson::SizeType i = 0; i < chile2Value.Size(); ++i){cout << " " << chile2Value[i].GetString() << endl;}}if(chileValue.HasMember("score")){cout << " " << "score : " << endl;const rapidjson::Value& child2Iter = chileValue["score"];for(rapidjson::Value::ConstMemberIterator it = child2Iter.MemberBegin(); it != child2Iter.MemberEnd(); ++it){cout << " " << it->name.GetString() << " : " << it->value.GetDouble() << endl;}}}
}
输出结果:
C++之RapidJSON生成json数据
C++之RapidJSON解析json数据相关推荐
- 深入分析jquery解析json数据
我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- Gson解析JSON数据中动态未知字段key的方法
转载自:https://blog.csdn.net/jdsjlzx/article/details/76785239 有时在解析json数据中的字段key是动态可变的时候,由于Gson是使用静态注解的 ...
- java json解析 代码_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- json解析详解 java_Java解析Json数据的两种方式详解
JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...
- JAVA 解析JSON数据
JSON 是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java 语言中解析json数 ...
- Java构造和解析Json数据之org.json
一.介绍 org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www ...
- gson生成jsonobject_GSON形式生成和解析json数据
GSON 方式生成和解析 json 数据 客户端与服务器进行数据交互时, 常常需要将数据在服务器端将数据转化成字符串并在客户 端对 json 数据进行解析生成对象. 但是用 jsonObject 和 ...
最新文章
- 原来Python用得好,工作这么好找
- JMeter学习笔记--JMeter监听器
- 给程序媛妹子的4个贴心建议
- 《笑傲网湖》第五回 状态检测防火墙
- 清华大学王晨阳:轻量级Top-K推荐框架及相关论文介绍
- udp需要arp请求吗_当你随便浏览一个网页时,你知道背后做了多少工作吗?
- php java 单点登录_php实现多站点共用session实现单点登录的方法详解
- linux下搜狗输入法无法输入中文解决方法
- go语言在windows编译在linux上运行的可执行程序
- IOS8模拟器设置中文输入
- Go语言标准库之strconv
- matlab2c使用c++实现matlab函数系列教程-mean函数
- mysql重点知识提取
- php swfupload,ThinkPHP+swfupload多图上传实例 经典实用的php多图上传
- 【转】bugku never give up 详解
- Java项目经验之交易密码安全机制
- PgMP Program Management Professional All-in-One Exam Guide
- 三代测序的简介和原理
- 老马的技术博客 android系统通过图片绝对路径获取URI的三种方法
- How to use template
热门文章
- ip,pv,uv分别是什么?有什么用?
- Spring Cloud Alibaba系列博客汇总整理
- 2022.09.29 周四
- Macbook Pro M1芯片Python开发环境配置
- 菜哥学知识图谱(通过“基于医疗知识图谱的问答系统”)(二)(搭建系统)
- zed_wrapper
- android 界面布局-各个布局的属性介绍,sharedpreferences原理
- 渗透工具之Ettercap
- 小程序,大世界-web点播直播入门-代码的自我修养-进阶的直梯
- 【源码+教程】Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕设项目_Java毕业设计_计算机毕业设计_Java项目开发