Dom解析示例

下面是我写的一个小例子,从test.json文件中读取内容并解析。其他代码示例也可以查看我的github仓库中关于rapidjson的测试代码:rapid_json_test.cpp.

test.json

[plain] view plain copy
  1. {
  2. "dictVersion": 1,
  3. "content":
  4. [
  5. {"key": "word1", "value": "单词1"} ,
  6. {"key": "word2", "value": "单词2"} ,
  7. {"key": "word3", "value": "单词3"} ,
  8. {"key": "word4", "value": "单词4"} ,
  9. {"key": "word5", "value": "单词5"}
  10. ]
  11. }

test.cpp

[cpp] view plain copy
  1. #include "../external/json/rapidjson.h"
  2. #include <fstream>
  3. #include <string>
  4. #include <cassert>
  5. #include <iostream>
  6. #define psln(x) std::cout << #x " = " << (x) << std::endl
  7. void testSimpleDoc() {
  8. using std::string;
  9. using std::ifstream;
  10. // read json content into string.
  11. string      stringFromStream;
  12. ifstream    in;
  13. in.open("test.json", ifstream::in);
  14. if (!in.is_open())
  15. return;
  16. string line;
  17. while (getline(in, line)) {
  18. stringFromStream.append(line + "\n");
  19. }
  20. in.close();
  21. // parse json from string.
  22. using rapidjson::Document;
  23. Document doc;
  24. doc.Parse<0>(stringFromStream.c_str());
  25. if (doc.HasParseError()) {
  26. rapidjson::ParseErrorCode code = doc.GetParseError();
  27. psln(code);
  28. return;
  29. }
  30. // use values in parse result.
  31. using rapidjson::Value;
  32. Value & v = doc["dictVersion"];
  33. if (v.IsInt()) {
  34. psln(v.GetInt());
  35. }
  36. Value & contents = doc["content"];
  37. if (contents.IsArray()) {
  38. for (size_t i = 0; i < contents.Size(); ++i) {
  39. Value & v = contents[i];
  40. assert(v.IsObject());
  41. if (v.HasMember("key") && v["key"].IsString()) {
  42. psln(v["key"].GetString());
  43. }
  44. if (v.HasMember("value") && v["value"].IsString()) {
  45. psln(v["value"].GetString());
  46. }
  47. }
  48. }
  49. }

rapidjson解析相关推荐

  1. rapidjson 嵌套json_[整理][RapidJson用法1]C++之RapidJson解析嵌套数组json | 勤奋的小青蛙...

    因为工作需要,需要对一段嵌套的json进行解析.其中我使用的开发语言是C++. 由于rapidjson的解析效率高效,所以今天研究了下RapidJson,下面是一段我用RapidJson解析的一段具有 ...

  2. C++之RapidJSON解析json数据

    RapidJSON 是一个 C++ 的 JSON 解析器及生成器. JSON文本: //document.json {"name":"xiaoming",&qu ...

  3. Rapidjson的简单使用(拼接json串,存取文件中的json,解析json串)

    Rapidjson的简单使用示例 很早就想用用Markdown了,一直没机会.今天就来试一下 先放个目录: Rapidjson的简单使用示例 rapidjson官方教程 本示例所用环境 示例代码与注释 ...

  4. 开源 C++ JSON 库 sonic-cpp解析性能为 rapidjson 的 2.5 倍

    sonic-cpp 是由字节跳动 STE 团队和服务框架团队共同研发的一款面向 C++ 语言的高效 JSON 库,极致地利用当前 CPU 硬件特性与向量化编程,大幅提高了序列化反序列化性能,解析性能为 ...

  5. rapidjson官方教程

    原文地址:http://rapidjson.org/zh-cn/md_doc_tutorial_8zh-cn.html 教程 目录 Value 及 Document 查询Value 查询Array 查 ...

  6. rapidjson 嵌套json_[整理][RapidJson用法2]C++之RapidJson创建嵌套数组json | 勤奋的小青蛙...

    上篇博文里我通过RapidJson解析了嵌套的json文本,那么本文章是RapidJson创建嵌套数组Json文本. 代码: #include "rapidjson/document.h&q ...

  7. cocos2dx中的Rapidjson

    1 Json基础 JSON 概念和特点: JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式,类似 XML ...

  8. rapidjson使用事项

    深度复制值 Document d; v2.CopyFrom(d, a); // 把整个document复制至v2,d不变 rapidjson为了最大化性能,大量使用了浅拷贝,使用之前一定要了解清楚. ...

  9. UE4从零开始制作数字孪生道路监测平台

    UE4从零开始制作数字孪生道路监测平台 UE4集成Cesium for Unreal和WebSocket,后端使用NodeJs搭建服务器进行数据模拟和真实数据实时转发. 1:新建UE4项目并集成Ces ...

最新文章

  1. linux传输文件到linux速度慢,linux中往nand(jffs2)中拷贝文件时速度慢的问题
  2. 将图片以流的形式保存到数据库(Image)以及从数据库中取出显示
  3. cocos2d-x 实现跨平台的目录遍历
  4. Android MediaPlayer使用方法简单介绍
  5. UCSB微软提出VIOLET,用Masked Visual-token Modeling进行端到端的视频语言学习!性能SOTA...
  6. Python+pandas处理Excel文件案例一则
  7. win7小工具打不开_Win7系统电脑桌面双击快捷键方式图标没反应的解决办法
  8. 创建目录 java_java创建文件和目录
  9. Linux下互斥量加锁与解锁操作的C代码实现
  10. matlab方差 anov,方差分析
  11. 流畅的python是python3吗_流畅的 Python - 3. 文本与
  12. Unity | 实现粘贴、复制功能
  13. 几款项目管理工具对比
  14. 轻松记录南极最美丽风景 有TA就已经足够
  15. 关于计算机英语手抄报全国一等奖,获奖手抄报图片
  16. cmd无法进入其他盘符问题解决方案
  17. 10【Mybatis延迟加载】
  18. CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载)
  19. 【微信小程序】车位在线销售平台(三)
  20. Idea 精准到类的打包方式:Artifacts 打包

热门文章

  1. 运动轨迹 php,JS做出抛物线运动轨迹
  2. 2015年1月23日
  3. 共识与拜占庭将军问题
  4. 同一台机器不同的sata线居然传输率不同
  5. java封装HTTP请求(GETPOSTFORM)
  6. 超唯美盒子萌鸽子版WordPress主题源码
  7. 开课吧暴雷:大批裁员还大巴车封门 方业昌称已负债10亿
  8. 数据库查询中的子查询方法
  9. 谣言检测论文分享(三)
  10. mysql 分批处理数据库_mysql 如何分批 读取数据