Rapidjson: извлечение параметра из JsonObject с помощью Rapidjson.

У меня есть jsonObject, который выглядит как

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

Я хотел знать, как я могу извлечь Mtype и время? это Types jsonArray ??


person MistyD    schedule 04.01.2014    source источник


Ответы (1)


Похоже, что 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
    ....
}
person gcochard    schedule 04.01.2014