2016-05-21 6 views
0

私はC++には全く新しいので、jsoncppを使用して天気を配列から取り出そうとしています。JSON配列の天気を取得する

JSON文字列は次のようになります。

{"coord":{"lon":139,"lat":35}, 
"sys":{"country":"JP","sunrise":1369769524,"sunset":1369821049}, 
"weather":[{"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}], 
"main":{"temp":289.5,"humidity":89,"pressure":1013,"temp_min":287.04,"temp_max":292.04}, 
"wind":{"speed":7.31,"deg":187.002}, 
"rain":{"3h":0}, 
"clouds":{"all":92}, 
"dt":1369824698, 
"id":1851632, 
"name":"Shuzenji", 
"cod":200} 

は、JSON配列が正常に動作解析、ここに関連するコードです:

Json::Value root; 
Json::Reader reader; 
bool parsingSuccessful = reader.parse(data.c_str(), root); 
if (!parsingSuccessful) 
{ 
    std::cout << "Failed to parse" 
    << reader.getFormattedErrorMessages(); 
    return 0; 
} 
std::cout << root.get("description", "n/a").asString() << std::endl; 

しかし、私はまだn/aで終わります。私は "weather"配列の "description"フィールドにアクセスしたいと思っています。これどうやってするの?

+0

ルートには「説明」フィールドがありません。 'root.get(" weather ")'の最初の要素はそれを持つ必要があります。 –

+0

@ Frederik.Lええ、私はそれを試みました。しかし、どうすれば "天気予報"の "記述"を具体的に指定できますか? – Chud37

+1

まったく同じユースケースではありませんが、これを確認してください:http://stackoverflow.com/questions/27902576/jsoncpp-find-object-in-array-by-matching-value –

答えて

1

これは機能しますか?

const Json::Value weather = root["weather"]; 
for (int index = 0; index < weather.size(); ++index) 
{ 
    std::cout << weather[index]["description"].asString(); 
}