我正在进行youtube api通话,我回来了一个var result = JSON.stringify(response, '', 2);
看起来像:
{
"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": {...}
完整对象响应在我的控制台中正确返回,但我想检索缩略图网址并将其显示为带有li标签的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 ...
});
答案 1 :(得分:1)
您收到的是JSON,您不应该将其字符串化。
删除此行
var result = JSON.stringify(response, '', 2);
然后简单地做
var obj = $.parseJSON(response);
答案 2 :(得分:1)
items
,snippet
是一个对象文字,+ +
无效javascript。