2016-07-16 9 views
-3

のプロパティを読み取ることができません。Instagram APIを使用して特定のタグを検索し、最初の結果の画像を表示しています。ここでは、JSON.parse()関数を使用して、http取得リクエストからhttps://api.instagram.com/v1/tags/{tag}/media/recent?access_token={access token}に戻ったJSONを解析しています。リクエストが私に返ってくるものがここにあります( - 問題ではないすべて)。注:私はURLの一部を消して、正しいものと仮定します。Instagram API:JSON.parse()が未定義のノードJs

/Users/pjtnt11/Documents/NodeJs/Instagram/index.js:52 
           console.log(JSON.parse(body).data.images.standard_resolution.url) 
                   ^

TypeError: Cannot read property 'images' of undefined 
    at Request._callback (/Users/pjtnt11/Documents/NodeJs/Instagram/index.js:52:67) 
    at Request.self.callback (/Users/pjtnt11/Documents/NodeJs/Instagram/node_modules/request/request.js:187:22) 
    at emitTwo (events.js:106:13) 
    at Request.emit (events.js:191:7) 
    at Request.<anonymous> (/Users/pjtnt11/Documents/NodeJs/Instagram/node_modules/request/request.js:1044:10) 
    at emitOne (events.js:96:13) 
    at Request.emit (events.js:188:7) 
    at IncomingMessage.<anonymous> (/Users/pjtnt11/Documents/NodeJs/Instagram/node_modules/request/request.js:965:12) 
    at emitNone (events.js:91:20) 
    at IncomingMessage.emit (events.js:185:7) 

I:私はこのコードを実行する今までそれは私に、このエラーを与えるとき

request.get("https://api.instagram.com/v1/tags/" + tag + "/media/recent?access_token=" + accessToken, function(error, response, body) 
           { 
           console.log(JSON.parse(body).data.images.standard_resolution.url) 
           }); 
        }); 

:ここ

{ 
    "data":[ 
     { 
     "images":{ 
      "low_resolution":{ 
       "url":"https://scontent.cdninstagram.com/t51.2885-15/s320x320/e35/--------_--------6248_1327489376_n.jpg?ig_cache_key=--------", 
       "width":320, 
       "height":320 
      }, 
      "thumbnail":{ 
       "url":"https://scontent.cdninstagram.com/t51.2885-15/s150x150/e35/--------_--------6248_1327489376_n.jpg?ig_cache_key=--------", 
       "width":150, 
       "height":150 
      }, 
      "standard_resolution":{ 
       "url":"https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/--------_--------6248_1327489376_n.jpg?ig_cache_key=--------", 
       "width":640, 
       "height":640 
      } 
     } 
     } 
    ] 
} 

は、私は、要求を作成し、JSONを解析するために使用していたコードです console.log()JSON.parse()より前に実行されていたが、 JSON.parseがコードの実行をブロックしている可能性があります。コールバックや使える約束があるかどうかもチェックしますが、何も見えませんでした。

今、私は何が起こっているのか分かりません。誰もがこのエラーの原因となる可能性があり、私はそれを修正する方法を知っていますか?

EDIT: わかりましたので、私はdataは、データ配列であるので、私は今問題data[0]ように自分のコードを変更する必要があることは、私は、コードを実行したときに、私は次のエラーを取得するであることが判明:

/Users/pjtnt11/Documents/NodeJs/Instagram/index.js:52 
           console.log(JSON.parse(body).data[0].images.standard_resolution.url) 
                   ^

TypeError: Cannot read property '0' of undefined 
    at Request._callback (/Users/pjtnt11/Documents/NodeJs/Instagram/index.js:52:67) 
    at Request.self.callback (/Users/pjtnt11/Documents/NodeJs/Instagram/node_modules/request/request.js:187:22) 
    at emitTwo (events.js:106:13) 
    at Request.emit (events.js:191:7) 
    at Request.<anonymous> (/Users/pjtnt11/Documents/NodeJs/Instagram/node_modules/request/request.js:1044:10) 
    at emitOne (events.js:96:13) 
    at Request.emit (events.js:188:7) 
    at IncomingMessage.<anonymous> (/Users/pjtnt11/Documents/NodeJs/Instagram/node_modules/request/request.js:965:12) 
    at emitNone (events.js:91:20) 
    at IncomingMessage.emit (events.js:185:7) 
+0

あなたは、URLが使用できなくなっていることから、おそらくあなたはすでに – Tibrogargan

+0

に返されるJSONの例を置くことができそれ。データは配列です。おそらくdata [0] .imagesが必要です。 – pjtnt11

+1

申し訳ありませんが、逃したテキストの最初の段落の下にその権利@Tibrogarganあなたの質問 – Tibrogargan

答えて

0

dataあなたが最初の要素にアクセスする必要があるので、作業スニペット以下を参照してください

JSON.parse(body).data[0].images

...、アレイです...

var someObject = '{ \ 
 
    "data":[ \ 
 
     { \ 
 
     "images":{ \ 
 
      "low_resolution":{ \ 
 
       "url":"https://scontent.cdninstagram.com/t51.2885-15/s320x320/e35/--------_--------6248_1327489376_n.jpg?ig_cache_key=--------", \ 
 
       "width":320, \ 
 
       "height":320 \ 
 
      }, \ 
 
      "thumbnail":{ \ 
 
       "url":"https://scontent.cdninstagram.com/t51.2885-15/s150x150/e35/--------_--------6248_1327489376_n.jpg?ig_cache_key=--------", \ 
 
       "width":150, \ 
 
       "height":150 \ 
 
      }, \ 
 
      "standard_resolution":{ \ 
 
       "url":"https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/--------_--------6248_1327489376_n.jpg?ig_cache_key=--------", \ 
 
       "width":640, \ 
 
       "height":640 \ 
 
      } \ 
 
     } \ 
 
     } \ 
 
    ] \ 
 
}'; 
 

 

 

 
console.log(JSON.parse(someObject).data[0].images.low_resolution.url);

+0

これは私のためには機能しません。私は自分の投稿を編集して説明した。 – pjtnt11

+0

'body'はあなたの考えを持っていない可能性があります。おそらく' response'を試してみませんか?しかし、JSONが投稿されて、上記の作品... – WhiteHat

関連する問題