0

私は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": {...}

完全なオブジェクト応答がコンソールに正しく返されますが、サムネイルの URL を取得して、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の解析方法を理解するために誰かが良いドキュメントにアドバイスできれば、素晴らしいでしょう:))

4

3 に答える 3

1

ループする必要がありますitems

$.each(obj.items, function() {
    output += this.snippet ...
});
于 2013-02-07T14:35:51.057 に答える
1

受け取るのは JSON です。文字列化しないでください。

この行を削除

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

そして単純に

var obj = $.parseJSON(response);
于 2013-02-07T14:36:49.747 に答える
1
  1. を繰り返したいitems
  2. snippetオブジェクトリテラルであり、
  3. + +は有効な JavaScript ではありません。
于 2013-02-07T14:36:53.367 に答える