使用 jQuery 访问更复杂的 JSON
Accessing more complex JSON with jQuery
我正在尝试从我创建的 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);
});
});
然而,这只是 returns 第三场比赛中的价值 - 所以:周五 00:00:00 05:30:00,周四 00:00:00 05:30:00。理想情况下,我希望能够遍历第一场比赛,然后是第二场比赛,然后是第三场比赛。然而,无论我多么努力地调整我的代码,我都不允许 $.getJSON 访问数据。
我也知道这种格式可以与 javascript 一起使用,但根据 RFC 4627(JSON 规范)无效 - 所以关于如何改进布局的任何建议JSON 将不胜感激。
您的JSON数据有误。您有 3 个计划项目而不是 3 个包含计划的对象
[ // array of games
{ // first game and schedule
"game":"one",
"schedule":[
{
"day":"mon",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"tue",
"start":"00:00:00",
"end":"05:30:00"
}
]
},
{ // second game and schedule
"game": "two",
"schedule": [
..
]
},
etc
]
您似乎已经在对象的顶层分别定义了 "game"
和 "schedule"
三次。只需修改您的 JSON 使其有意义:也许您应该有一个游戏对象数组,每个对象都有一个 "number"
和一个 "schedule"
字段。
将您的 json 代码粘贴到此站点并正确格式化。
http://json.parser.online.fr/
你是对的,这个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
}
我正在尝试从我创建的 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);
});
});
然而,这只是 returns 第三场比赛中的价值 - 所以:周五 00:00:00 05:30:00,周四 00:00:00 05:30:00。理想情况下,我希望能够遍历第一场比赛,然后是第二场比赛,然后是第三场比赛。然而,无论我多么努力地调整我的代码,我都不允许 $.getJSON 访问数据。
我也知道这种格式可以与 javascript 一起使用,但根据 RFC 4627(JSON 规范)无效 - 所以关于如何改进布局的任何建议JSON 将不胜感激。
您的JSON数据有误。您有 3 个计划项目而不是 3 个包含计划的对象
[ // array of games
{ // first game and schedule
"game":"one",
"schedule":[
{
"day":"mon",
"start":"00:00:00",
"end":"05:30:00"
},
{
"day":"tue",
"start":"00:00:00",
"end":"05:30:00"
}
]
},
{ // second game and schedule
"game": "two",
"schedule": [
..
]
},
etc
]
您似乎已经在对象的顶层分别定义了 "game"
和 "schedule"
三次。只需修改您的 JSON 使其有意义:也许您应该有一个游戏对象数组,每个对象都有一个 "number"
和一个 "schedule"
字段。
将您的 json 代码粘贴到此站点并正确格式化。 http://json.parser.online.fr/
你是对的,这个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
}