2017-01-22 5 views
0

Я пытаюсь получить данные из некоторого API погоды, который возвращает JSON. Я читал, что каждый элемент в списке рассматривается как узел без «метки», но здесь внутри списка содержатся два узла. Как получить доступ к метке description, так как root.get<string>("weather.description") выбрасывает ошибку Node does not exist?Boost :: ptree - доступ к узлу дерева свойств, содержащемуся в списке

То, что я пытался (Который не дал ничего):

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" 
     } 
    ] 
} 

ответ

0

Нашли обходной путь для этого! Я думал, что погода была списком из 8 отдельных узлов, но на самом деле это двое детей погоды. Таким образом, я могу получить доступ к своим индивидуальным данным следующим:

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

Который возвращает:

brume 
soleil