【发布时间】:2015-05-15 19:33:04
【问题描述】:
这与我提出的另一个问题有关,但更具体。我需要从我的 JSON 数据中反序列化一个 std::map。
{
"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();
不幸的是,这个迭代器没有“first”和“second”成员。我试过 DynamicStruct(同样的问题)和 JSON::Object(不能/不会从 jsonStruct["stdmap_data"] 转换)。
这在 JSON 数据中似乎很常见,所以如果 Poco C++ 不能做到这一点,我会感到震惊。有人知道应该怎么做吗?
【问题讨论】:
标签: c++ json c++11 stdmap poco-libraries