我正在尝试从名为js/schedule.json
的JSON文件中读取计划数据,如下所示:
[
{"date":"12/06/2014","day":"Thursday","kick-off":"21:00","team1":"Brazil","team2":"Croatia","group":"A","stage":"group stages","broadcaster":"ITV"},
{"date":"13/06/2014","day":"Friday","kick-off":"17:00","team1":"Mexico","team2":"Cameroon","group":"A","stage":"group stages","broadcaster":"ITV"}
...
]
我想迭代JSON对象中的每个项目,只返回匹配夹具,其中" date"匹配先前设置的名为today
的变量。
我使用的jQuery如下:
function getArray(){
return $.getJSON('js/schedule.json');
}
getArray().done( function(json) {
console.log(json); // show the json data in console
var _len = json.length;
var fixture;
//loop through json and match today's date with match-date
for (var i in json) {
fixture = json[i];
if (fixture.date == today) {
//print out today's schedule here
console.log(fixture.team1 + " Vs. " + fixture.team2);
}
}
});
然而,我在控制台中作为输出得到的是
[Object, Object, Object, Object, Object, Object, Object]
,对象中有7个项目,因此这是暂时的正确数量,但我无法让控制台显示fixture.team1 + fixture.team2
我已检查过各种类似问题的帖子,例如JSON returning [object Object],但这些帖子并没有完全解决。
任何帮助都会很棒。干杯!
正如所指出的那样,问题是today
的值与date
中的值不匹配。添加前面的" 0"到几个月/天< 10代码有效。
答案 0 :(得分:0)
当你想要一个正常的for循环时,你正在使用for ... in
(假设你的数据是一个对象数组,而不是一个有很多未知属性/键的对象)。话虽如此,尝试类似:
getArray().done(function(json){
// ...
for (var i = 0; i < json.length; i++){
var o = json[i]; // {"date":"12/06/2014","day":"Tursday",...}
// now perform a check against `o['date']` or `o.date` and return the
// matching result
}
});
答案 1 :(得分:0)
输出
[Object, Object, Object, Object, Object, Object, Object]
是
的输出console.log(json); // show the json data in console
你从来没有输出
console.log(fixture.team1 + " Vs. " + fixture.team2);
因为您的示例中if-condition
中的条件始终为false
。因此,您应该为today
变量指定正确的值。
如果要记录json
对象,可以使用JSON.stringify
功能
console.log(JSON.stringify(json));