2014-01-04 1 views

ответ

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 
    .... 
}