为什么我没有从json对象获得key的值,我做错了什么?

时间:2016-07-11 14:18:54

标签: json geojson

我正试图从JSON对象obj获取关键的“天气”,并且我试图获得关键“主要”的价值,即云。这是我的代码:

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

      });

    });

JSON对象obj包含我试图获取天气状况的数据云:

  {
      "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.

我真的没有得到如何做到这一点,请不要标记它重复,阅读那些类似的问题并没有帮助我。请告诉我如何更正我的代码以获得所需的输出。

1 个答案:

答案 0 :(得分:0)

通过调用$.parseJSON(data);获得的对象似乎是object类型。它不是一个数组。

var obj = $.parseJSON(data);

所以你的$.each循环没有意义。您应该能够访问变量['weather']上的obj键,而无需循环遍历obj