2012-09-14 115 views
-2

我遇到问题。我需要访问jQuery中数组中的对象。访问json数组中的对象

我的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”的元素?

+4

[成功](http://www.quickmeme.com/meme/3qwpig/) –

回答

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 

,并将它做你想要的。

+0

非常感谢,它的作品! –