2017-01-22 2 views
0

Ich versuche, Daten von einigen Wetter-API zu bekommen, die ein JSON zurückgibt. Ich lese, dass jedes Element in einer Liste als ein Knoten ohne "Label" betrachtet wird, aber hier in der Liste sind zwei Knoten enthalten. Wie greife ich auf das description Etikett zu, da root.get<string>("weather.description") einen Node does not exist Fehler wirft?Boost :: ptree - Zugriff auf einen Eigenschaftsbaum-Knoten in einer Liste

Was ich versucht (was nichts zurückgegeben):

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

Antwort

0

eine Abhilfe für dieses gefunden! Ich dachte, das Wetter wäre eine Liste von 8 verschiedenen Knoten, aber es sind eigentlich zwei Kinder des Wetters. Auf diese Weise kann ich auf ihre individuellen Daten zugreifen mit den folgenden:

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

Welche zurück:

brume 
soleil 
Verwandte Themen