迭代JSON文件

时间:2014-06-09 15:09:46

标签: javascript jquery json

我正在尝试从名为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代码有效。

2 个答案:

答案 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));