zoukankan      html  css  js  c++  java
  • c++ rapidjson解析多层级json

    如果一个层级为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
    ", __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;
  • 相关阅读:
    spring日记(三)
    spring日记(二)
    spring框架日记(一)
    springMVC日记(四)
    springMVC日记(三),文件上传,拦截器,数据校验
    springMVC日记(二)
    springMVC日记(一)
    Mybatis总结
    优化Dalvik虚拟机的内存分配
    简单对App进行单元测试
  • 原文地址:https://www.cnblogs.com/JD85/p/10060080.html
Copyright © 2011-2022 走看看