1. void rapidjson1(){
  2.  
  3. rapidjson::StringBuffer s;
  4. rapidjson::Writer<rapidjson::StringBuffer> writer(s);
  5.  
  6. writer.StartObject(); // Between StartObject()/EndObject(),
  7. writer.Key("hello"); // output a key,
  8. writer.String("world"); // follow by a value.
  9. writer.Key("t");
  10. writer.Bool(true);
  11. writer.Key("f");
  12. writer.Bool(false);
  13. writer.Key("n");
  14. writer.Null();
  15. writer.Key("i");
  16. writer.Uint(123);
  17. writer.Key("pi");
  18. writer.Double(3.1416);
  19. writer.Key("a");
  20. writer.StartArray(); // Between StartArray()/EndArray(),
  21. for (unsigned i = 0; i < 4; i++)
  22. writer.Uint(i); // all values are elements of the array.
  23. writer.EndArray();
  24. writer.EndObject();
  25. // {"hello":"world","t":true,"f":false,"n":null,"i":123,"pi":3.1416,"a":[0,1,2,3]}
  26. std::cout << s.GetString() << std::endl;
  27. }

document.json

  1. {
  2. "name": "xiaoming",
  3. "gender": "boy",
  4. "hobby": [
  5. "足球",
  6. "篮球",
  7. "电影"
  8. ],
  9. "score": {
  10. "数学": 91.5,
  11. "语文": 95.5,
  12. "英语": 96
  13. },
  14. "lover": {
  15. "name": "xiaohong",
  16. "gender": "girl",
  17. "hobby": [
  18. "画画",
  19. "跳舞",
  20. "唱歌"
  21. ],
  22. "score": {
  23. "数学": 78.5,
  24. "语文": 89,
  25. "英语": 90
  26. }
  27. }
  28. }
  1. void rapidjson2(){
  2.  
  3. std::ifstream t("/home/leoxae/document1.json");
  4. // std::ifstream t("/home/leoxae/CLionProjects/KeekoAIRobot/data/ninstructionRecognition/bcb2_feature.json");
  5. std::string str((std::istreambuf_iterator<char>(t)),
  6. std::istreambuf_iterator<char>());
  7.  
  8. rapidjson::Document document;
  9. document.Parse(str.c_str());
  10.  
  11. rapidjson::Value::ConstMemberIterator iter = document.FindMember("name");
  12. if(iter != document.MemberEnd()){
  13. cout << "name : " << iter->value.GetString() << endl;
  14. }
  15.  
  16. iter = document.FindMember("gender");
  17. if(iter != document.MemberEnd()){
  18. cout << "gender : " << iter->value.GetString() << endl;
  19. }
  20.  
  21. if(document.HasMember("hobby")){
  22. cout << "hobby : " << endl;
  23. const rapidjson::Value& childValue = document["hobby"];
  24. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  25. cout << " " << childValue[i].GetString() << endl;
  26. }
  27. }
  28.  
  29. if(document.HasMember("score")){
  30. cout << "score : " << endl;
  31. const rapidjson::Value& childIter = document["score"];
  32. for(rapidjson::Value::ConstMemberIterator it = childIter.MemberBegin(); it != childIter.MemberEnd(); ++it){
  33. cout << " " << it->name.GetString() << " : " << it->value.GetDouble() << endl;
  34. }
  35. }
  36.  
  37. if(document.HasMember("lover")){
  38. cout << "lover : " << endl;
  39. const rapidjson::Value& chileValue = document["lover"];
  40. rapidjson::Value::ConstMemberIterator chileIter = chileValue.FindMember("name");
  41. if(chileIter != chileValue.MemberEnd()){
  42. cout << " " << "name : " << chileIter->value.GetString() << endl;
  43. }
  44.  
  45. chileIter = chileValue.FindMember("gender");
  46. if(chileIter != chileValue.MemberEnd()){
  47. cout << " " << "gender : " << chileIter->value.GetString() << endl;
  48. }
  49.  
  50. if(chileValue.HasMember("hobby")){
  51. cout << " " << "hobby : " << endl;
  52. const rapidjson::Value& chile2Value = chileValue["hobby"];
  53. for(rapidjson::SizeType i = 0; i < chile2Value.Size(); ++i){
  54. cout << " " << chile2Value[i].GetString() << endl;
  55. }
  56. }
  57.  
  58. if(chileValue.HasMember("score")){
  59. cout << " " << "score : " << endl;
  60. const rapidjson::Value& child2Iter = chileValue["score"];
  61. for(rapidjson::Value::ConstMemberIterator it = child2Iter.MemberBegin(); it != child2Iter.MemberEnd(); ++it){
  62. cout << " " << it->name.GetString() << " : " << it->value.GetDouble() << endl;
  63. }
  64. }
  65. }
  66.  
  67. }

ninstr.json

  1. {"\u6269\u5c551": [0, 592],
  2. "\u6269\u5c552": [592, 1232],
  3. "\u6269\u5c553": [1232, 2073],
  4. "\u6269\u5c554": [2073, 2874],
  5. "\u6269\u5c555": [2874, 3786],
  6. "\u6269\u5c556": [3786, 4683],
  7. "\u6269\u5c557": [4683, 5267],
  8. "\u6269\u5c558": [5267, 6151],
  9. "\u6269\u5c559": [6151, 6895],
  10. "\u6269\u5c5510": [6895, 7694],
  11. "\u5730\u57ab\u524d\u8fdb": [7694, 8790],
  12. "\u5730\u57ab\u5de6\u8f6c": [8790, 10237],
  13. "\u5730\u57ab\u53f3\u8f6c": [10237, 11617],
  14. "P1": [11617, 12809], "P2": [12809, 13680],
  15. "\u5f00\u59cb": [13680, 15049],
  16. "\u7ed3\u675f": [15049, 16417],
  17. "\u5730\u57ab\u524d\u8fdb\u5c0f": [16417, 17113],
  18. "\u5730\u57ab\u5de6\u8f6c\u5c0f": [17113, 18433],
  19. "\u5730\u57ab\u53f3\u8f6c\u5c0f": [18433, 19954],
  20. "\u5f00\u59cb\u5c0f": [19954, 21242],
  21. "\u7ed3\u675f\u5c0f": [21242, 22571],
  22. "\u6682\u505c": [22571, 23785]}
  1. void rapidjson3(){
  2.  
  3. // std::ifstream t("/home/leoxae/document.json");
  4. // std::ifstream t("/home/leoxae/CLionProjects/KeekoAIRobot/data/ninstructionRecognition/bcb2_feature.json");
  5. std::ifstream t("/home/leoxae/ninstr.json");
  6. std::string str((std::istreambuf_iterator<char>(t)),
  7. std::istreambuf_iterator<char>());
  8.  
  9. rapidjson::Document document;
  10. document.Parse(str.c_str());
  11.  
  12. //扩展1
  13. if(document.HasMember("扩展1")){
  14. cout << "扩展1 : " << endl;
  15. const rapidjson::Value& childValue = document["扩展1"];
  16. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  17. cout << " " << childValue[i].GetInt() << endl;
  18. }
  19. }
  20.  
  21. //扩展2
  22. if(document.HasMember("扩展2")){
  23. cout << "扩展2 : " << endl;
  24. const rapidjson::Value& childValue = document["扩展2"];
  25. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  26. cout << " " << childValue[i].GetInt() << endl;
  27. }
  28. }
  29. //扩展3
  30. if(document.HasMember("扩展3")){
  31. cout << "扩展3 : " << endl;
  32. const rapidjson::Value& childValue = document["扩展3"];
  33. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  34. cout << " " << childValue[i].GetInt() << endl;
  35. }
  36. }
  37. //扩展4
  38. if(document.HasMember("扩展4")){
  39. cout << "扩展4 : " << endl;
  40. const rapidjson::Value& childValue = document["扩展4"];
  41. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  42. cout << " " << childValue[i].GetInt() << endl;
  43. }
  44. }
  45. //扩展5
  46. if(document.HasMember("扩展5")){
  47. cout << "扩展5 : " << endl;
  48. const rapidjson::Value& childValue = document["扩展5"];
  49. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  50. cout << " " << childValue[i].GetInt() << endl;
  51. }
  52. }
  53. //扩展6
  54. if(document.HasMember("扩展6")){
  55. cout << "扩展6 : " << endl;
  56. const rapidjson::Value& childValue = document["扩展6"];
  57. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  58. cout << " " << childValue[i].GetInt() << endl;
  59. }
  60. }
  61. //扩展7
  62. if(document.HasMember("扩展7")){
  63. cout << "扩展7 : " << endl;
  64. const rapidjson::Value& childValue = document["扩展7"];
  65. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  66. cout << " " << childValue[i].GetInt() << endl;
  67. }
  68. }
  69. //扩展8
  70. if(document.HasMember("扩展8")){
  71. cout << "扩展8 : " << endl;
  72. const rapidjson::Value& childValue = document["扩展8"];
  73. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  74. cout << " " << childValue[i].GetInt() << endl;
  75. }
  76. }
  77. //扩展9
  78. if(document.HasMember("扩展9")){
  79. cout << "扩展9 : " << endl;
  80. const rapidjson::Value& childValue = document["扩展9"];
  81. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  82. cout << " " << childValue[i].GetInt() << endl;
  83. }
  84. }
  85. //扩展10
  86. if(document.HasMember("扩展10")){
  87. cout << "扩展10 : " << endl;
  88. const rapidjson::Value& childValue = document["扩展10"];
  89. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  90. cout << " " << childValue[i].GetInt() << endl;
  91. }
  92. }
  93. //地垫前进
  94. if(document.HasMember("地垫前进")){
  95. cout << "地垫前进 : " << endl;
  96. const rapidjson::Value& childValue = document["地垫前进"];
  97. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  98. cout << " " << childValue[i].GetInt() << endl;
  99. }
  100. }
  101. //地垫左转
  102. if(document.HasMember("地垫左转")){
  103. cout << "地垫左转 : " << endl;
  104. const rapidjson::Value& childValue = document["地垫左转"];
  105. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  106. cout << " " << childValue[i].GetInt() << endl;
  107. }
  108. }
  109. //地垫右转
  110. if(document.HasMember("地垫右转")){
  111. cout << "地垫右转 : " << endl;
  112. const rapidjson::Value& childValue = document["地垫右转"];
  113. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  114. cout << " " << childValue[i].GetInt() << endl;
  115. }
  116. }
  117. //P1
  118. if(document.HasMember("P1")){
  119. cout << "P1 : " << endl;
  120. const rapidjson::Value& childValue = document["P1"];
  121. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  122. cout << " " << childValue[i].GetInt() << endl;
  123. }
  124. }
  125. //P2
  126. if(document.HasMember("P2")){
  127. cout << "P2 : " << endl;
  128. const rapidjson::Value& childValue = document["P2"];
  129. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  130. cout << " " << childValue[i].GetInt() << endl;
  131. }
  132. }
  133. //开始
  134. if(document.HasMember("开始")){
  135. cout << "开始 : " << endl;
  136. const rapidjson::Value& childValue = document["开始"];
  137. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  138. cout << " " << childValue[i].GetInt() << endl;
  139. }
  140. }
  141. //结束
  142. if(document.HasMember("结束")){
  143. cout << "结束 : " << endl;
  144. const rapidjson::Value& childValue = document["结束"];
  145. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  146. cout << " " << childValue[i].GetInt() << endl;
  147. }
  148. }
  149. //地垫前进小
  150. if(document.HasMember("地垫前进小")){
  151. cout << "地垫前进小 : " << endl;
  152. const rapidjson::Value& childValue = document["地垫前进小"];
  153. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  154. cout << " " << childValue[i].GetInt() << endl;
  155. }
  156. }
  157. //地垫左转小
  158. if(document.HasMember("地垫左转小")){
  159. cout << "地垫左转小 : " << endl;
  160. const rapidjson::Value& childValue = document["地垫左转小"];
  161. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  162. cout << " " << childValue[i].GetInt() << endl;
  163. }
  164. }
  165. //地垫右转小
  166. if(document.HasMember("地垫右转小")){
  167. cout << "地垫右转小 : " << endl;
  168. const rapidjson::Value& childValue = document["地垫右转小"];
  169. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  170. cout << " " << childValue[i].GetInt() << endl;
  171. }
  172. }
  173. //开始小
  174. if(document.HasMember("开始小")){
  175. cout << "开始小 : " << endl;
  176. const rapidjson::Value& childValue = document["开始小"];
  177. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  178. cout << " " << childValue[i].GetInt() << endl;
  179. }
  180. }
  181. //结束小
  182. if(document.HasMember("结束小")){
  183. cout << "结束小 : " << endl;
  184. const rapidjson::Value& childValue = document["结束小"];
  185. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  186. cout << " " << childValue[i].GetInt() << endl;
  187. }
  188. }
  189. //暂停
  190. if(document.HasMember("暂停")){
  191. cout << "暂停 : " << endl;
  192. const rapidjson::Value& childValue = document["暂停"];
  193. for(rapidjson::SizeType i = 0; i < childValue.Size(); ++i){
  194. cout << " " << childValue[i].GetInt() << endl;
  195. }
  196. }
  197. }
  1. void readrapidjson(){
  2. string strJsonTest = "{\"item_1\":\"value_1\",\"item_2\":\"value_2\",\"item_3\":\"value_3\",\"item_4\":\"value_4\",\"item_arr\":[\"arr_vaule_1\",\"arr_vaule_2\"]}";
  3. rapidjson::Document docTest;
  4. docTest.Parse<0>(strJsonTest.c_str());
  5.  
  6. if (!docTest.HasParseError())
  7. {
  8. for (rapidjson::Value::ConstMemberIterator itr = docTest.MemberBegin(); itr != docTest.MemberEnd(); itr++)
  9. {
  10. rapidjson::Value jKey;
  11. rapidjson::Value jValue;
  12. rapidjson::Document::AllocatorType allocator;
  13. jKey.CopyFrom(itr->name, allocator);
  14. jValue.CopyFrom(itr->value,allocator);
  15. if (jKey.IsString())
  16. {
  17. string name = jKey.GetString();
  18. // printf("\r\nname: %s\r\n",name.c_str());
  19. cout << "name=>>:" << name << endl;
  20. }
  21. }
  22. }
  23.  
  24. }

rapidjson解析与构造实例的更多相关文章

  1. Cocos2d-X网络编程(5) 使用Rapidjson解析数据

    Json基础及28种c++解析库性能对比 JSON 概念和特点:     JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)     JSON ...

  2. 在SQL中使用CLR提供基本函数对二进制数据进行解析与构造

      二进制数据包的解析一般是借助C#等语言,在通讯程序中解析后形成字段,再统一单笔或者批量(表类型参数)提交至数据库,在通讯程序中,存在BINARY到struct再到table的转换. 现借助CLR提 ...

  3. SAX方式解析XML文件实例

    books.XML文件: 书籍book.java实体类: public class Book { private String id; private String name; private Str ...

  4. 两种库解析、构造 JSON

    1.用CJSON库 1.1解析Json 需要解析的JSON文件: { "name":"Tsybius", , "sex_is_male":t ...

  5. dom4j解析xml字符串实例

    DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...

  6. 小白详细解析C#反射特性实例

    套用MSDN上对于反射的定义:反射提供了封装程序集.模块和类型的对象(Type 类型).可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果代 ...

  7. 【零基础】AI神经元解析(含实例代码)

    一.序言 关于“深度学习”大部分文章讲的都云里雾里,直到看到“床长”的系列教程以及<深度学习入门:基于Python的理论与实现>,这里主要是对这两个教程进行个人化的总结,目标是让“0基础” ...

  8. Request 接收参数乱码原理解析三:实例分析

    通过前面两篇<Request 接收参数乱码原理解析一:服务器端解码原理>和<Request 接收参数乱码原理解析二:浏览器端编码原理>,了解了服务器和浏览器编码解码的原理,接下 ...

  9. 【转】adns解析库——域名解析实例(C++、linux)

    转自:http://blog.csdn.net/fty8788/article/details/7480334 adns是一个开源的dns解析库 官方文档:http://www.chiark.gree ...

随机推荐

  1. javaAPI1

    Iterable<T>接口, Iterator<T> iterator() Collection<E>:接口,add(E e) ,size() , Object[] ...

  2. Output of C++ Program | Set 1

    Predict the output of below C++ programs. Question 1 1 // Assume that integers take 4 bytes. 2 #incl ...

  3. NSURLConnection和Runloop

    - 1.1 涉及知识点(1)两种为NSURLConnection设置代理方式的区别 //第一种设置方式: //通过该方法设置代理,会自动的发送请求 // [[NSURLConnection alloc ...

  4. Linux系统的负载与CPU、内存、硬盘、用户数监控的shell脚本

    利用Shell脚本来监控Linux系统的负载.CPU.内存.硬盘.用户登录数. 这几天在学习研究shell脚本,写的一些系统负载.CPU.内存.硬盘.用户数监控脚本程序.在没有nagios监控的情况下 ...

  5. 【Java 8】函数式接口(二)—— 四大函数接口介绍

    前言 Java8中函数接口有很多,大概有几十个吧,具体究竟是多少我也数不清,所以一开始看的时候感觉一脸懵逼,不过其实根本没那么复杂,毕竟不应该也没必要把一个东西设计的很复杂. 几个单词 在学习了解之前 ...

  6. 01 - Vue3 UI Framework - 开始

    写在前面 一年多没写过博客了,工作.生活逐渐磨平了棱角. 写代码容易,写博客难,坚持写高水平的技术博客更难. 技术控决定慢慢拾起这份坚持,用作技术学习的阶段性总结. 返回阅读列表点击 这里 开始 大前 ...

  7. Jenkins性能测试

    目录 一.简介 二.JMeter测试 一.简介 Taurus是-个开源的自动化框架,用于运行各种开源负载测试工具和功能测试工具.其支持最流行的开源负载测试工具Apache JMeter.Seleniu ...

  8. cmd窗口连接mongodb服务端

    1----->配置环境变量,将mongodb\bin目录配置到path 2----->打开cmd窗口,进入到bin目录,测试mongodb服务端是否在运行:net start mongod ...

  9. 转: 再谈select, iocp, epoll,kqueue及各种I/O复用机制

    首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonblocking I/O I/O multiplexing (select and poll) signal drive ...

  10. 去除指定….RemoveMatching…(Power Query 之 M 语言)

    表去除指定行: =Table.RemoveMatchingRows( 表, 列表, "指定列") 表中指定列中与列表中相同的行会被去除 表只有一列时,第三参数可以缺省 示例1:&q ...