2016-05-21 1 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. Я хочу иметь доступ к полю описания в массиве «погода». Как я могу это сделать?

+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(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^