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数据相关推荐

  1. 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...

  2. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  3. Gson解析JSON数据中动态未知字段key的方法

    转载自:https://blog.csdn.net/jdsjlzx/article/details/76785239 有时在解析json数据中的字段key是动态可变的时候,由于Gson是使用静态注解的 ...

  4. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  5. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  6. json解析详解 java_Java解析Json数据的两种方式详解

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  7. JAVA 解析JSON数据

    JSON 是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java 语言中解析json数 ...

  8. Java构造和解析Json数据之org.json

    一.介绍 org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www ...

  9. gson生成jsonobject_GSON形式生成和解析json数据

    GSON 方式生成和解析 json 数据 客户端与服务器进行数据交互时, 常常需要将数据在服务器端将数据转化成字符串并在客户 端对 json 数据进行解析生成对象. 但是用 jsonObject 和 ...

最新文章

  1. 原来Python用得好,工作这么好找
  2. JMeter学习笔记--JMeter监听器
  3. 给程序媛妹子的4个贴心建议
  4. 《笑傲网湖》第五回 状态检测防火墙
  5. 清华大学王晨阳:轻量级Top-K推荐框架及相关论文介绍
  6. udp需要arp请求吗_当你随便浏览一个网页时,你知道背后做了多少工作吗?
  7. php java 单点登录_php实现多站点共用session实现单点登录的方法详解
  8. linux下搜狗输入法无法输入中文解决方法
  9. go语言在windows编译在linux上运行的可执行程序
  10. IOS8模拟器设置中文输入
  11. Go语言标准库之strconv
  12. matlab2c使用c++实现matlab函数系列教程-mean函数
  13. mysql重点知识提取
  14. php swfupload,ThinkPHP+swfupload多图上传实例 经典实用的php多图上传
  15. 【转】bugku never give up 详解
  16. Java项目经验之交易密码安全机制
  17. PgMP Program Management Professional All-in-One Exam Guide
  18. 三代测序的简介和原理
  19. 老马的技术博客 android系统通过图片绝对路径获取URI的三种方法
  20. How to use template

热门文章

  1. ip,pv,uv分别是什么?有什么用?
  2. Spring Cloud Alibaba系列博客汇总整理
  3. 2022.09.29 周四
  4. Macbook Pro M1芯片Python开发环境配置
  5. 菜哥学知识图谱(通过“基于医疗知识图谱的问答系统”)(二)(搭建系统)
  6. zed_wrapper
  7. android 界面布局-各个布局的属性介绍,sharedpreferences原理
  8. 渗透工具之Ettercap
  9. 小程序,大世界-web点播直播入门-代码的自我修养-进阶的直梯
  10. 【源码+教程】Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕设项目_Java毕业设计_计算机毕业设计_Java项目开发