rapidjson:使用rapidjson从JsonObject中提取参数

时间:2014-01-04 21:28:21

标签: c++ rapidjson

我有一个看起来像

的jsonObject
{"Types":[{"Mtype":"text/plain","time":"Thus:24:32:02"},{"MtypeSec":"text/plain","time":"Thus:24:32:02"}]}

我想知道如何提取Mtype和时间?是Types一个jsonArray ??

1 个答案:

答案 0 :(得分:2)

看起来Types是一个数组,但数组是Object的子类,这就是IsObject()返回true的原因。您应该在其上调用IsArray()以查看它是否为数组。

正确的语法是document["Types"][0]["Mtype"].GetString(),或者您可以使用以下内容迭代它:

for (SizeType i = 0; i < document["Types"].Size(); i++){
    std::string strval;
    if(document["Types"][i].hasMember("Mtype")){
        strval = document["Types"][i]["Mtype"].GetString();
    } else if(document["Types"][i].hasMember("mtypeSec")){
        strval = document["Types"][i]["mtypeSec"].GetString();
    } else if(document["Types"][i].hasMember("time")){
        strval = document["Types"][i]["time"].GetString();
    } else if(/*other member test*/){
        //do something with other member
    } else {
        //base case, member not in the list of useful members
    }
    //do something useful with strval
    ....
}