[常用第三方库]RapidJSON
RapidJSON是一个C++的高性能的JSON解析器及生成器,同时支持SAX/DOM风格的API。 简介
Rapdijson解析Json本身是JavaScript对象表示法(JavaScript Ojbect Notation),在javascript层面很容易解析。对于c++,必须导入相关库文件。在json解析之前,要先了解json几个相关概念:Value:value其实就是var,对于value可以理解为int,也是理解为string,或者是bool型变量等其他数据类型。对于定义Value value,只是一个定义,还没有决定其数据类型,如果明确value的值,则相应确定其数据类型了。Json数据类型是一个map,表示为key-value形式,对于Value转换为基础数据类型有一下几种方法:vall.SetArray();vall.SetArrayRaw();vall.SetBool();vall.SetDouble();vall.SetInt();vall.SetNull();vall.SetObject();vall.SetString();vall.SetStringRaw() vall.SetUint();同时,对于value的数据类型,是可以重复设置。 Write:将Value数据编码成json合适数据格式; Reader:与Writer相反,是将json格式数据解析成一个Value值。 实例
/* 下载rapidjson-master.zip,解压后,把include文件夹拷贝到自己的工程中就可以使用了 只需要include,不需要加载.lib,.dll */ // rapidjson/example/simpledom/simpledom.cpp` #include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" #include <iostream> using namespace rapidjson; int main() { // 1. 把 JSON 解析至 DOM。 const char* json = "{"project":"rapidjson","stars":10}"; Document d;///< 创建一个Document对象 rapidJson的相关操作都在Document类中 d.Parse(json);///< 通过Parse方法将Json数据解析出来 if (!d.HasParseError()) { //这里要注意一点就是一定要对解析出来的document(JSON解析出来以xml dom形式存在)进行判断,判断是否解析正确,否则后面一切处理均是无效的。 // 2. 利用 DOM 作出修改。 Value& s = d["stars"]; /* Value:value其实就是var,对于value可以理解为int,也是理解为string,或者是bool型变量等其他数据类型。对于定义Value value,只是一个定义,还没有决定其数据类型,如果明确value的值,则相应确定其数据类型了。 Json数据类型是一个map,表示为key-value形式,对于Value转换为基础数据类型有 一下几种方法: vall.SetArray() vall.SetArrayRaw() vall.SetBool() vall.SetDouble() vall.SetInt() vall.SetNull() vall.SetObject() vall.SetString() vall.SetStringRaw() vall.SetUint(); 同时,对于value的数据类型,是可以重复设置。 */ s.SetInt(s.GetInt() + 1); // 3. 把 DOM 转换(stringify)成 JSON。 StringBuffer buffer; Writer<StringBuffer> writer(buffer); d.Accept(writer); // Output {"project":"rapidjson","stars":11} std::cout << buffer.GetString() << std::endl; } return 0; } 执行过程示意图: 每个 JSON 值都储存为 Value 类,而 Document 类则表示整个 DOM,它存储了一个 DOM 树的根 Value。RapidJSON 的所有公开类型及函数都在 rapidjson 命名空间中。 根据Json语法规则,花括号保存对象,中括号保存数组;所以Document就是对象。 [概念]JSON RapidJSON 文档教程 Git--RapidJSON DOM是什么DOM(文档对象模型)是针对HTML和XML文档的一个API,是JavaScript操作网页的接口,通过DOM可以去改变文档。它的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容)。浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个树状结构。DOM的最小组成单位叫做节点(node),文档的树形结构(DOM树)由12种类型的节点组成。简而言之,DOM可以理解为一个访问或操作HTML各种标签的实现标准。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |