2016-07-11 3 views
0

Я пытаюсь получить ключевую «погоду» от объекта объекта JSON obj, и из этого я пытаюсь получить значение ключевых «главных» i.e Clouds. Вот мой код:Почему я не получаю значение ключа от объекта json, что я делаю неправильно?

 $(document).ready(function() { 

     $("#getMessage").on("click", function() { 

     $.getJSON("http://api.openweathermap.org/data/2.5/weather?lat=coord.lat&lon=coord.lon&APPID=b10811ac33cbff62d9facbabc293bbbf", function(json) { 
      var data = JSON.stringify(json); 
      var yo = ""; 
      var obj = $.parseJSON(data); 
      $.each(obj, function() { 

      yo += this['weather'][0]['main']; // Please correct here,I think here is some problem 
      }); 

      $(".message").html(yo); 
     }); 

     }); 

    }); 

Объект OBJ JSON содержит эти данные, из которых я пытаюсь получить погодные условия Clouds:

{ 
     "coord": { 
     "lon": 0.78, "lat": 0.25 
     } 
     , 
     "weather":[ { 
     "id": 803, "main": "Clouds", "description": "broken clouds", "icon": "04d" 
     } 
     ], 
     "base":"cmc stations", 
     "main": { 
     "temp": 296.934, "pressure": 1030.02, "humidity": 100, "temp_min": 296.934, "temp_max": 296.934, "sea_level": 1030.01, "grnd_level": 1030.02 
     } 
     , 
     "wind": { 
     "speed": 5.22, "deg": 191.003 
     } 
     , 
     "clouds": { 
     "all": 76 
     } 
     , 
     "dt":1468231605, 
     "sys": { 
     "message": 0.0047, "country": "YE", "sunrise": 1468216709, "sunset": 1468260392 
     } 
     , 
     "id":8282146, 
     "name":"Font Al-Da'da", 
     "cod":200 
    } 

Вот ссылка на мой Codepen http://codepen.io/meow414/pen/rLGkWv Ответ на API вызов каждый раз отличается, но все ключи и формат остаются неизменными. Кроме того, если вы хотите взглянуть на JSON объект, который вы можете использовать:

$(".message").html(data);// it will show the JSON objecct from which I am trying to get data. 

Я действительно не получаю, как это сделать, пожалуйста, не пометить его дублировать, читать эти подобные вопросы не помогли мне. Скажите, пожалуйста, как исправить мой код, чтобы получить желаемый результат.

ответ

0

Объект, который вы получаете по телефону $.parseJSON(data);, похоже, имеет тип object. Это не массив.

var obj = $.parseJSON(data); 

Так что ваш цикл $.each не имеет смысла. Вы должны иметь доступ к ключу ['weather'] по переменной obj, без прохождения через obj.

+0

Теперь я использую 'yo + = obj.weather.main;', но все равно не получаю никакого вывода. –