2016-02-03 107 views
0

所以,我知道如何讀取「單級」json數組。但是,我無法弄清楚如何從多層次的json數組索引我想要的值。如何閱讀多級json

我有這樣的JSON數據:

{ 
    "items": [ 
     { 
      "snippet": { 
       "title": "YouTube Developers Live: Embedded Web Player Customization" 
      } 
     } 
    ] 
} 

我想訪問標題的值,但是沒有這些訪問的價值,而是返回undefined:

console.log(data["items"][0].title);

或:

console.log(data["items"][0]["title"]);

但是,這代碼返回snippet對象:

console.log(data["items"][0]);

data變量指JSON數據。

我應該怎麼辦?

回答

5

試試這個:

data.items[0].snippet.title 

解釋(你可以看到相應的對象/* */評論):

items[0]; 
/* 
{ 
    'snippet': { 
     'title': 'YouTube Developers Live: Embedded Web Player Customization' 
    } 
} 
*/ 

items[0].snippet; 
/* 
{ 
    'title': 'YouTube Developers Live: Embedded Web Player Customization' 
} 
*/ 

items[0].snippet.title; 
/* 
'YouTube Developers Live: Embedded Web Player Customization' 
*/ 
+0

這很好,謝謝!所以是項目[0]訪問表中的片斷,呃? – Conash

+0

@康什見我的更新,我希望它有幫助。 – madox2

+0

@Const除了我的回答,'data.items'和'data [「items」]' – madox2

1

至於除了madox2的答案,這裏是一個解釋:

{ 
    "items": [ 
     { 
     "snippet": { 
      "title": "YouTube Developers Live: Embedded Web Player Customization" 
     } 
    } 
    ] 
} 

根是一個對象,而items是一個數組。對象被大括號包圍,而數組則被sqare括號包圍。

在JS,你可以訪問這樣的對象:

parent.child 

在你的情況,假設你的數據被分配到一個名爲data變量,你將與變量名和對象,你訪問它想要得到:

data.items 

數組有鍵 - 如果沒有指定鍵,鍵將基於數字。

因此,看到items是一個沒有指定任何鍵的數組,您必須訪問第x個元素。 x你的情況爲0,因爲它是數組的第一個項目(請記住,數組是零索引):

data.items[0] 

在這裏,你再有一個對象,所以訪問:

data.items[0].snippet.title