rapidjson: извлечение параметра из JsonObject с помощью rapidjson
У меня есть jsonObject, который выглядит как
{"Types":[{"Mtype":"text/plain","time":"Thus:24:32:02"},{"MtypeSec":"text/plain","time":"Thus:24:32:02"}]}
Я хотел бы знать, как я могу извлечь Mtype и время ? является ли Types
jsonArray ??
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 .... }