我有问题。我需要在jQuery上访问数组中的对象。
我的json:
{"employ": [
{
"id": 46846,
"name": "some name",
"schedule": "main",
"hours": {
"11.09.2012": 5,
"12.09.2012": 8
}
}
,
{
"id": 3543,
"name": "another name",
"schedule": "main",
"hours": {
"11.09.2012": 9,
"12.09.2012": 7
}
}
]}
我的jquery:
$(document).ready(function(){
$("#click").click(function(){
$.getJSON('employ.json', {}, function(json){
$("#userid").append(json.employ[0].hours.????);
});
})
});
我在“????”的地方需要什么代码访问名为“11.09.2012”的元素?
答案 0 :(得分:8)
只需使用["key"]
对其进行“索引”,例如:
json.employ[0].hours["11.09.2012"]
JavaScript对象允许两种方式访问其项目;使用点表示法(.name
)或括号表示法(["name"]
)。显然,["name"]
在多个场合使用,例如你的(其中项目包含无效的标识符)。这两种方式都是允许的,只取决于偏好和情况。
当不直接使用JSON时,JavaScript对象不要求将每个项目声明为字符串,因此您可以:
var json = {asdf: "fdsa", aaa: "fff"};
它完全有效。但在此类声明中,您只能使用用于命名常量变量的有效字符(作为有效标识符)。因此,对于这种情况,您应该始终能够使用点表示法。
使用实际的JSON通信时,所有键(项)都存储为字符串,因此允许使用“无效”字符。但是,如果密钥包含无效字符,则必须使用括号表示法([]
)。 []
是获取和设置项目的最安全方式,尤其是动态。通过动态,我的意思是做:
for (var i = 0; i < 10; i++) {
if (("test"+i) in json && json["test"+i] > 10) {
// do something
}
}
在上面,你不能做类似的事情:
json.test+i
让它做你想做的事。