Boost :: ptree - 访问列表中包含的属性树节点

时间:2017-01-22 18:37:58

标签: c++ json parsing boost boost-propertytree

我正在尝试从某些返回JSON的天气API获取数据。 我读到列表中的每个项目都被视为没有“标签”的节点,但是,在这里,列表中包含两个节点。我如何访问description标签,因为root.get<string>("weather.description")会引发Node does not exist错误?

我尝试了什么(什么都没有回复):

for (auto it: root.get_child("weather")) {
    cout << it.first.data() << "+";
    cout << it.second.data() << endl;
}

weather.json

{
    "weather": [
        {
            "id": "701",
            "main": "Mist",
            "description": "brume",
            "icon": "50n"
        },
        {
            "id": "502",
            "main": "Sun",
            "description": "soleil",
            "icon": "50b"
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

为此找到了解决方法!我认为天气是8个独立节点的列表,但它实际上是两个天气的孩子。这样,我可以使用以下内容访问他们的个人数据:

for (auto it: root.get_child("weather")) {
    cout << it.second.get_child("description").data() << endl;
}

返回:

brume
soleil