2012-09-14 162 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

非常感謝,它的作品! –