RapidJson读取json文档
RapidJson基本操作
1、读取
使用 rapidjson::Document::Parse处理原始文本。
使用 rapidjson::Document::ValueType处理数据项(rapidjson::Document本身也是ValueType)。
例:
json文件内容如:
{ "N1": "D1", "N2": { "bejing", "shanghai", "guangzhou" } }
代码:
rapidjson::Document doc; doc.Parse<rapidjson::kParseDefaultFlags>((const char*)<#原文本#>); auto & n1 = doc["N1"]; if(n1.IsString()) { printf("n1 is:%s\n", n1.GetString()); // 输出 D1 }
读取数组:
auto & a = doc["N2"]; if(a.IsArray()) { for (size_t i = 0; i < a.Size(); ++i) { auto & node = a[i]; printf("%s\n", node.GetString()); } }
附:
使用编译语法定义json内容
概念:
String: 字符串, Number: 数字, Object:对象, Array:数组, null:空值, false:布尔假, true:布尔真
R1: _Name: String
R2: _Data: String,Number,Object,Array,null,false,true
R3: Object: { _Name:_Data, ... } (最后一项后面没有逗号)
R4: Array: [_Data, _Data, ...] (最后一项后面没有逗号)
R5: 一个合法的json为一个单独的顶级Object。