2013-02-07 41 views
0

我做一個YouTube的API調用,我拿回var result = JSON.stringify(response, '', 2);看起來像:混合陣列JSON - 分析問題

{ 
    "kind": "youtube#searchListResponse", 
    "pageInfo": { 
      "totalResults": 1000000, 
      "resultsPerPage": 5 
     }, 
    "items": [ 
     { 
      "id": { 
       "kind": "youtube#video", 
       "videoId": "DEne4AoX_RU" 
      }, 
      "kind": "youtube#searchResult", 
      "snippet": { 
       "publishedAt": "2012-11-22T22:36:15.000Z", 
       "thumbnails": { 
        "default": { 
         "url": "https://i.ytimg.com/vi/DEne4AoX_RU/default.jpg" 
        }, 
        "medium": { 
         "url": "https://i.ytimg.com/vi/DEne4AoX_RU/mqdefault.jpg" 
        }, 
        "high": { 
         "url": "https://i.ytimg.com/vi/DEne4AoX_RU/hqdefault.jpg" 
        } 
       } 
      } 
     }, 
     { 
      "id": {...} 

完整的物體響應在我的控制檯正確返回,但我想要檢索縮略圖URL並顯示它作爲鋰標記HTML列表 於是,我第一次在列表中獲取所有片斷的條目:

var obj = $.parseJSON(result); 
$.each(obj, function() { 
    output += this.snippet + + "<br/>"; 
}); 
console.log(output); 

但是我在控制檯有一個消息:Uncaught TypeError: Cannot read property 'length' of undefined。我錯過了什麼?順便說一句,我不明白爲什麼還是有括號的JSON字符串化result(如果有人可以建議一些好的文檔瞭解如何解析JSON,將是巨大的:))

+0

你爲什麼將響應串聯起來? –

回答

1

你應該遍歷items

$.each(obj.items, function() { 
    output += this.snippet ... 
}); 
+0

Oups好的!那現在就起作用了 – user1611830

1

你收到的是JSON,你不應該把它串聯起來。

刪除此行

var result = JSON.stringify(response, '', 2); 

,只是做

var obj = $.parseJSON(response); 
要遍歷 items
1
  1. snippet是一個對象字面,
  2. + +不是有效的JavaScript 。