c++ rapidjson解析多层级json

mac2022-06-30  23

如果一个层级为data,其内部又包含一个层级status, 可以直接通过这种方式来跨级访问:

rapidjson::Value& val_status = doc["data"]["status"];

 

#include "json/rapidjson.h" #include "json/document.h" #include "json/writer.h" #include "json/stringbuffer.h" rapidjson::Document doc; doc.Parse<0>(data.bytes); if (doc.HasParseError()) { //CCLOG("%s ---> rapidjson parse error!!! %s\n", __FUNCTION__, doc.GetParseError()); return; } else { rapidjson::Value& val_status = doc["data"]["status"]; if (val_status.IsInt()) { log("====== val_data_status: %d", val_status.GetInt } }

 

层级太多,提现提取用的比较多的某一层级,减少不必要的上层节点的重复获取,这里节点L需要被多次访问,所以提前把L提取出来,方便之后L内部对象的提取,运算效率上没想太多,应该没有啥区别,rapidjson内部不会傻到用数组遍历

rapidjson::Value& val_L = doc["data"]["result"]["L"]; rapidjson::Value& val_index1 = val_L["index1"]; rapidjson::Value& val_index2 = val_L["index2"]; int index1 = val_index1.IsInt() ? val_index1.GetInt() : 0; int index2 = val_index2.IsInt() ? val_index2.GetInt() : 0;

 

转载于:https://www.cnblogs.com/JD85/p/10060080.html

相关资源:C 通过jsoncpp类库读写JSON文件示例代码
最新回复(0)