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\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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM