$ .getJSON,无法读取属性' 0'未定义的

时间:2014-12-11 19:07:21

标签: jquery json api

我正在尝试从JSON API响应中获取一个值,以便稍后将其映射到我的HTML。

我的部分JSON是:

{
"data": {
    "nearest_area": [
        {
            "distance_miles": "13.5",
            "latitude": "34.500",
            "longitude": "33.000"
        }
    ],
    "request": [
        {
            "query": "Lat 34.68 and Lon 33.11",
            "type": "LatLon"
        }
    ],
    "weather": [
        {
            "date": "2014-12-11",
            "hourly": [
                {
                    "cloudcover": "0",
                    "humidity": "73",
                    "precipMM": "0.0",
                    "pressure": "1022",
                    "sigHeight_m": "1.5",
                    "swellDir": "257",
                    "swellHeight_m": "1.5",
                    "swellPeriod_secs": "8.4",
                    "tempC": "19",
                    "tempF": "67",
                    "time": "0",
                    "visibility": "10",
                    "waterTemp_C": "21",
                    "waterTemp_F": "70",
                    "weatherCode": "113",
                    "weatherIconUrl": [
                        {

我的代码来获取它:

$.getJSON(url, function(data) {
    $('#id').html(data.weather[0].hourly[0].waterTemp_C); 
});

我得到了:

  

未捕获的TypeError:无法读取未定义的属性“0”

如果我去$('#id').html(data.weather.hourly[0].waterTemp_C);我得到:

  

未捕获的TypeError:无法读取未定义的属性“每小时”

我是JSON的新手,请帮我正确选择它。我正在使用http://www.worldweatheronline.com API来应对海洋天气。

1 个答案:

答案 0 :(得分:3)

您的JSON中有一个父"data"属性,因此您的回调代码应该如下所示:

data.data.weather[0].hourly[0].waterTemp_C
│    │
│    └─ "data" property name
│
└─ callback variable name