Это связано с другим вопросом, который я задал, но гораздо более конкретным. Мне нужно десериализовать std::map из моих данных JSON.
{
"name":"john smith"
"metadata":
{
"age":45,
"middle_name":"william",
},
}
Я пробовал много, много способов сделать это, и ничего не работает. Основываясь на ответах на предыдущий поток, я подумал, что этот код должен работать.
std::map myMap;
std::string jsonString; // string containing the above JSON
Poco::JSON::Parser jsonParser;
Poco::Dynamic::Var parsedJSON = jsonParser.parse(jsonString);
Poco::Dynamic::Var parsedResult = jsonParser.result();
Poco::DynamicStruct jsonStruct = *parsedResult.extract<Poco::JSON::Object::Ptr>();
Poco::Dynamic::Var mapVar = jsonStruct["stdmap_data"];
for (Poco::Dynamic::Var::ConstIterator itr = mapVar.begin(), end = mapVar.end(); itr != end; ++itr)
myMap[itr->first().toString()] = itr->second().toString();
К сожалению, у этого итератора нет "первого" и "второго" членов. Я пробовал DynamicStruct (та же проблема) и JSON::Object (не могу/не буду конвертировать из jsonStruct["stdmap_data"]).
Это кажется чем-то ОЧЕНЬ распространенным в данных JSON, поэтому я был бы шокирован, если бы Poco C++ не смог этого сделать. Кто-нибудь знает, как это должно быть сделано?