Как получить описание погоды из OpenWeatherMap API - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь получить описание погоды на французском из API OpenWeatherMap, но я застрял.

Что я делаю не так, пожалуйста?

var urlBase = "http://api.openweathermap.org/data/2.5/weather?id=";
var apiKey = "&appid=xxx";
var unitsParam = "&units=metric";
var language = "&lang=fr";
var url = urlBase + cityCode + unitsParam + language + apiKey ;

startWebRequest (url, function(status, type, content) {
  var data = JSON.parse(content);
  console.log(data);
  setScreen('screen2');
  setText("label1",data.name);        
  setText('label2',data.main.temp);
  setText('label3',data.main.feels_like);
  setText('label4',data.weather.description[0]);

Я получаю undefined ошибка, и я застрял.

Ошибка типа: data.weather.description не определено.

Не могли бы вы взглянуть на мой код и помочь мне?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Согласно возвращенному объекту вы должны получить доступ к описанию следующим образом: data.weather[0].description

0 голосов
/ 19 апреля 2020

Согласно документации API, description - это string, а не array. Но у вас также есть погодная клавиша array.

. Чтобы правильно получить доступ к description, как вы предполагали, вам нужно сделать следующее:

data.weather[0].description

Не:

data.weather.description[0]

Но обратите внимание, у вас могут возникнуть проблемы, если массив weather пуст.

Выполнение того, что я рекомендовал выше, решит ваш TypeError, который вы испытываете.

Если у вас возникли проблемы со значением setText, равным undefined. Просто используйте пустую строку как запасной вариант.

Как это:

setText('label4', data.weather[0] ? data.weather[0].description : '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...