我正在尝试从我创建的 JSON 文件访问此数据:
{
"game":"one",
"schedule":[
{
"day":"mon",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"tue",
"start":"00:00:00",
"end":"05:30:00"
}
],
"game":"two",
"schedule":[
{
"day":"mon",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"wed",
"start":"00:00:00",
"end":"05:30:00"
}
],
"game":"three",
"schedule":[
{
"day":"fri",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"thu",
"start":"00:00:00",
"end":"05:30:00"
}
]
}
这就是我尝试访问它的方式:
$.getJSON(json_location, function(data) {
$.each(data.schedule, function() {
console.log(this.day + " " + this.start + " " + this.end);
});
});
但是,这仅返回第三场比赛中的值 - 因此:周五 00:00:00 05:30:00,周四 00:00:00 05:30:00。理想情况下,我希望能够迭代第一场比赛,然后是第二场,然后是第三场。然而,无论我如何尝试调整我的代码,我都无法允许 $.getJSON 访问数据。
我还知道这种格式对于与 javascript 一起使用是有效的,但根据 RFC 4627(JSON 规范)无效 - 因此,任何有关如何改进 JSON 布局的建议将不胜感激。
最佳答案
你是对的,这个 JSON 是错误的,因为相同的按键游戏和时间表有多个值
尝试这样的事情(最简单的改变)
{
"one":[
{
"day":"mon",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"tue",
"start":"00:00:00",
"end":"05:30:00"
}
],
"two":[
{
"day":"mon",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"wed",
"start":"00:00:00",
"end":"05:30:00"
}
],
"three":[
{
"day":"fri",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"thu",
"start":"00:00:00",
"end":"05:30:00"
}
]
}
然后像这样迭代
for ( var gameId in data )
{
var scheduleArray = data[ gameId ];
//iterate this array
}
关于javascript - 使用 jQuery 访问更复杂的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34086727/