Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置循环以解析JSON响应_Javascript_Json_Loops - Fatal编程技术网

Javascript 设置循环以解析JSON响应

Javascript 设置循环以解析JSON响应,javascript,json,loops,Javascript,Json,Loops,我目前正在使用WundergroundAPI作为学习JS的工具。我有下面的代码来解析我得到的JSON响应中的数据,但这是一个每小时一次的预测,我想解析36小时,下面的代码只解析1小时。我知道有一种更简单的方法可以做到这一点,而不是为所有36个小时创建变量。如果有人能给我指出正确的方向,我将不胜感激 我当前如何解析JSON: $(document).ready(function(){ $("#hourly").click(function() { var t = document.getEleme

我目前正在使用WundergroundAPI作为学习JS的工具。我有下面的代码来解析我得到的JSON响应中的数据,但这是一个每小时一次的预测,我想解析36小时,下面的代码只解析1小时。我知道有一种更简单的方法可以做到这一点,而不是为所有36个小时创建变量。如果有人能给我指出正确的方向,我将不胜感激

我当前如何解析JSON:

$(document).ready(function(){
$("#hourly").click(function() {
var t = document.getElementById("zip").value;

  $.ajax({
  url : "http://api.wunderground.com/api/MYKEY/hourly/q/" + t + ".json",
  dataType : "jsonp",
  success : function(parsed_json) {
var h0day = parsed_json['hourly_forecast']["0"]["FCTTIME"]['weekday_name_abbrev'];
 var h0time = parsed_json['hourly_forecast']["0"]["FCTTIME"]["civil"]; 
     var h0temp = parsed_json['hourly_forecast']["0"]["temp"]["english"];
     var h0icon = parsed_json['hourly_forecast']["0"]["icon_url"];
     var h0condition = parsed_json['hourly_forecast']["0"]["condition"];
{
  "response": {
  "version":"0.1",
  "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
  "features": {
  "hourly": 1
  }
    }
        ,
    "hourly_forecast": [
        {
        "FCTTIME": {
        "hour": "21","hour_padded": "21","min": "00","sec": "0","year": "2014","mon": "1","mon_padded": "01","mon_abbrev": "Jan","mday": "26","mday_padded": "26","yday": "25","isdst": "0","epoch": "1390788000","pretty": "9:00 PM EST on January 26, 2014","civil": "9:00 PM","month_name": "January","month_name_abbrev": "Jan","weekday_name": "Sunday","weekday_name_night": "Sunday Night","weekday_name_abbrev": "Sun","weekday_name_unlang": "Sunday","weekday_name_night_unlang": "Sunday Night","ampm": "PM","tz": "","age": ""
        },
        "temp": {"english": "24", "metric": "-3"},
        "dewpoint": {"english": "15", "metric": "-9"},
        "condition": "Overcast",
        "icon": "cloudy",
        "icon_url":"http://icons-ak.wxug.com/i/c/k/nt_cloudy.gif",
        "fctcode": "4",
        "sky": "94",
        "wspd": {"english": "8", "metric": "13"},
        "wdir": {"dir": "South", "degrees": "190"},
        "wx": "",
        "uvi": "0",
        "humidity": "67",
        "windchill": {"english": "16", "metric": "-8"},
        "heatindex": {"english": "-9998", "metric": "-9998"},
        "feelslike": {"english": "16", "metric": "-8"},
        "qpf": {"english": "", "metric": ""},
        "snow": {"english": "", "metric": ""},
        "pop": "10",
        "mslp": {"english": "29.87", "metric": "1011"}
        }
        ,
        {
        "FCTTIME": {
        "hour": "22","hour_padded": "22","min": "00","sec": "0","year": "2014","mon": "1","mon_padded": "01","mon_abbrev": "Jan","mday": "26","mday_padded": "26","yday": "25","isdst": "0","epoch": "1390791600","pretty": "10:00 PM EST on January 26, 2014","civil": "10:00 PM","month_name": "January","month_name_abbrev": "Jan","weekday_name": "Sunday","weekday_name_night": "Sunday Night","weekday_name_abbrev": "Sun","weekday_name_unlang": "Sunday","weekday_name_night_unlang": "Sunday Night","ampm": "PM","tz": "","age": ""
        },
        "temp": {"english": "25", "metric": "-3"},
        "dewpoint": {"english": "16", "metric": "-8"},
        "condition": "Overcast",
        "icon": "cloudy",
        "icon_url":"http://icons-ak.wxug.com/i/c/k/nt_cloudy.gif",
        "fctcode": "4",
        "sky": "94",
        "wspd": {"english": "9", "metric": "14"},
        "wdir": {"dir": "SSW", "degrees": "199"},
        "wx": "",
        "uvi": "0",
        "humidity": "70",
        "windchill": {"english": "16", "metric": "-8"},
        "heatindex": {"english": "-9998", "metric": "-9998"},
        "feelslike": {"english": "16", "metric": "-8"},
        "qpf": {"english": "0.00", "metric": "0.00"},
        "snow": {"english": "", "metric": ""},
        "pop": "10",
        "mslp": {"english": "29.82", "metric": "1009"}
        }
        ,
        {
        "FCTTIME": {
        "hour": "23","hour_padded": "23","min": "00","sec": "0","year": "2014","mon": "1","mon_padded": "01","mon_abbrev": "Jan","mday": "26","mday_padded": "26","yday": "25","isdst": "0","epoch": "1390795200","pretty": "11:00 PM EST on January 26, 2014","civil": "11:00 PM","month_name": "January","month_name_abbrev": "Jan","weekday_name": "Sunday","weekday_name_night": "Sunday Night","weekday_name_abbrev": "Sun","weekday_name_unlang": "Sunday","weekday_name_night_unlang": "Sunday Night","ampm": "PM","tz": "","age": ""
        },
        "temp": {"english": "26", "metric": "-2"},
        "dewpoint": {"english": "17", "metric": "-7"},
        "condition": "Overcast",
        "icon": "cloudy",
        "icon_url":"http://icons-ak.wxug.com/i/c/k/nt_cloudy.gif",
        "fctcode": "4",
        "sky": "94",
        "wspd": {"english": "9", "metric": "14"},
        "wdir": {"dir": "SSW", "degrees": "199"},
        "wx": "",
        "uvi": "0",
        "humidity": "70",
        "windchill": {"english": "18", "metric": "-7"},
        "heatindex": {"english": "-9998", "metric": "-9998"},
        "feelslike": {"english": "18", "metric": "-7"},
        "qpf": {"english": "", "metric": ""},
        "snow": {"english": "", "metric": ""},
        "pop": "10",
        "mslp": {"english": "29.82", "metric": "1009"}
        }
        ,
我正在解析的JSON响应示例:

$(document).ready(function(){
$("#hourly").click(function() {
var t = document.getElementById("zip").value;

  $.ajax({
  url : "http://api.wunderground.com/api/MYKEY/hourly/q/" + t + ".json",
  dataType : "jsonp",
  success : function(parsed_json) {
var h0day = parsed_json['hourly_forecast']["0"]["FCTTIME"]['weekday_name_abbrev'];
 var h0time = parsed_json['hourly_forecast']["0"]["FCTTIME"]["civil"]; 
     var h0temp = parsed_json['hourly_forecast']["0"]["temp"]["english"];
     var h0icon = parsed_json['hourly_forecast']["0"]["icon_url"];
     var h0condition = parsed_json['hourly_forecast']["0"]["condition"];
{
  "response": {
  "version":"0.1",
  "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
  "features": {
  "hourly": 1
  }
    }
        ,
    "hourly_forecast": [
        {
        "FCTTIME": {
        "hour": "21","hour_padded": "21","min": "00","sec": "0","year": "2014","mon": "1","mon_padded": "01","mon_abbrev": "Jan","mday": "26","mday_padded": "26","yday": "25","isdst": "0","epoch": "1390788000","pretty": "9:00 PM EST on January 26, 2014","civil": "9:00 PM","month_name": "January","month_name_abbrev": "Jan","weekday_name": "Sunday","weekday_name_night": "Sunday Night","weekday_name_abbrev": "Sun","weekday_name_unlang": "Sunday","weekday_name_night_unlang": "Sunday Night","ampm": "PM","tz": "","age": ""
        },
        "temp": {"english": "24", "metric": "-3"},
        "dewpoint": {"english": "15", "metric": "-9"},
        "condition": "Overcast",
        "icon": "cloudy",
        "icon_url":"http://icons-ak.wxug.com/i/c/k/nt_cloudy.gif",
        "fctcode": "4",
        "sky": "94",
        "wspd": {"english": "8", "metric": "13"},
        "wdir": {"dir": "South", "degrees": "190"},
        "wx": "",
        "uvi": "0",
        "humidity": "67",
        "windchill": {"english": "16", "metric": "-8"},
        "heatindex": {"english": "-9998", "metric": "-9998"},
        "feelslike": {"english": "16", "metric": "-8"},
        "qpf": {"english": "", "metric": ""},
        "snow": {"english": "", "metric": ""},
        "pop": "10",
        "mslp": {"english": "29.87", "metric": "1011"}
        }
        ,
        {
        "FCTTIME": {
        "hour": "22","hour_padded": "22","min": "00","sec": "0","year": "2014","mon": "1","mon_padded": "01","mon_abbrev": "Jan","mday": "26","mday_padded": "26","yday": "25","isdst": "0","epoch": "1390791600","pretty": "10:00 PM EST on January 26, 2014","civil": "10:00 PM","month_name": "January","month_name_abbrev": "Jan","weekday_name": "Sunday","weekday_name_night": "Sunday Night","weekday_name_abbrev": "Sun","weekday_name_unlang": "Sunday","weekday_name_night_unlang": "Sunday Night","ampm": "PM","tz": "","age": ""
        },
        "temp": {"english": "25", "metric": "-3"},
        "dewpoint": {"english": "16", "metric": "-8"},
        "condition": "Overcast",
        "icon": "cloudy",
        "icon_url":"http://icons-ak.wxug.com/i/c/k/nt_cloudy.gif",
        "fctcode": "4",
        "sky": "94",
        "wspd": {"english": "9", "metric": "14"},
        "wdir": {"dir": "SSW", "degrees": "199"},
        "wx": "",
        "uvi": "0",
        "humidity": "70",
        "windchill": {"english": "16", "metric": "-8"},
        "heatindex": {"english": "-9998", "metric": "-9998"},
        "feelslike": {"english": "16", "metric": "-8"},
        "qpf": {"english": "0.00", "metric": "0.00"},
        "snow": {"english": "", "metric": ""},
        "pop": "10",
        "mslp": {"english": "29.82", "metric": "1009"}
        }
        ,
        {
        "FCTTIME": {
        "hour": "23","hour_padded": "23","min": "00","sec": "0","year": "2014","mon": "1","mon_padded": "01","mon_abbrev": "Jan","mday": "26","mday_padded": "26","yday": "25","isdst": "0","epoch": "1390795200","pretty": "11:00 PM EST on January 26, 2014","civil": "11:00 PM","month_name": "January","month_name_abbrev": "Jan","weekday_name": "Sunday","weekday_name_night": "Sunday Night","weekday_name_abbrev": "Sun","weekday_name_unlang": "Sunday","weekday_name_night_unlang": "Sunday Night","ampm": "PM","tz": "","age": ""
        },
        "temp": {"english": "26", "metric": "-2"},
        "dewpoint": {"english": "17", "metric": "-7"},
        "condition": "Overcast",
        "icon": "cloudy",
        "icon_url":"http://icons-ak.wxug.com/i/c/k/nt_cloudy.gif",
        "fctcode": "4",
        "sky": "94",
        "wspd": {"english": "9", "metric": "14"},
        "wdir": {"dir": "SSW", "degrees": "199"},
        "wx": "",
        "uvi": "0",
        "humidity": "70",
        "windchill": {"english": "18", "metric": "-7"},
        "heatindex": {"english": "-9998", "metric": "-9998"},
        "feelslike": {"english": "18", "metric": "-7"},
        "qpf": {"english": "", "metric": ""},
        "snow": {"english": "", "metric": ""},
        "pop": "10",
        "mslp": {"english": "29.82", "metric": "1009"}
        }
        ,

。。。以此类推。

看看你的json,它看起来像是一个数组,所以你应该能够像其他数组一样索引它。因此,不是:

 var h0day = parsed_json['hourly_forecast']["0"]["FCTTIME"]['weekday_name_abbrev'];
您应该能够做到:

 var h0day = parsed_json.hourly_forecast[i].FCTTIME.weekday_name_abbrev;
其中
i
for
循环中的变量:

 success : function(parsed_json) {
     // check we have at least 36 entries
     var j = parsed_json.hourly_forcast.length < 36 ? parsed_json.hourly_forcast.length : 36;
     for(var i=0; i<j; i++) {
         var h0day = parsed_json.hourly_forecast[i].FCTTIME.weekday_name_abbrev;
         //...etc...
         // now do something with those parsed values...
     }
 }
现在在您的成功函数中,我将把值存储为对象:

     for(var i=0; i<j; i++) {
         myParsedData.push({
             hday: parsed_json.hourly_forecast[i].FCTTIME.weekday_name_abbrev,
             htime: parsed_json.hourly_forecast[i].FCTTIME.civil,
             htemp: parsed_json.hourly_forecast[i].temp.english,
             hicon: parsed_json.hourly_forecast[i].icon_url
             hcondition: parsed_json.hourly_forecast[i].condition
         });
     }

我认为这实际上取决于你想对数据做什么。您是否设置了这些变量以节省您键入整个
解析的_json['hourly_forecast'][“0”][“icon_url”]的时间部分?谢谢。我知道我可以做那样的事。我希望有人能为我指明正确的方向,让我知道如何实施它。