2017-09-16 21 views
0

サーバーからレスポンス本文からデータを抽出しようとしています。私はしばらくの間、インターネットを閲覧し、 "うまくいくはず"ということをいくつか見つけましたが、そうではありません。リクエストはJSONオブジェクトを返すhttpsリクエストです。配列を含むJSONオブジェクトからデータを抽出する

//Open the request: 
request({ 

    //Set the request Method: 
    method: 'POST', 
    //Set the headers: 
    headers: { 
    'Content-Type': 'application/json', 
    'Authorization': "Bearer "+ token, 
    'X-Originating-Ip': ipAddress 
    }, 
    //Set the URL: 
    url: 'URL', 
    //Set the request body: 
    body: { 'Body here'}, 
    }, function(error, response, body){ 

    //Alert the response body: 
    for(var i=0; body.data.listings.length; i++){ 
     console.log(data.listings[i].listingType); 
    } 
    console.log(response.statusCode); 
    }); 

実際のレスポンスボディは表示できませんが、複数の配列を含むJSONオブジェクトです。エラーを修正する

答えて

0

おそらくべきconsole.log(body.data.listing[i].listingType)

もう一つの良い方法は、次のようになります。

body.data.listings.forEach(function(element,index){ 
    //do something 
} 
0

問題は、まずループの

for(var i=0; body.data.listings.length; i++){ 
    console.log(data.listings[i].listingType); 
} 

、の終了条件でありますループはbody.data.listings.lengthであり、常にlistingsの長さを返し、空でない配列に対しては真実です。ループ宣言を

for(var i=0; i<body.data.listings.length; i++){ 

に変更する必要があります。配列内のすべての項目を正しくトラバースする必要があります。 第2に、Jamesが述べたように、data.listings[i].listingTypeではなく、body.data.listings[i].listingTypeをループの内側に使用する必要があります。

+0

私はまだTypeErrorを取得しています:未定義のプロパティ 'リスト'を読み取ることができません –

+0

@ChristopherLittlewoodつまり、 'body'オブジェクトには' data'プロパティがありません。 'console.log(JSON.stringify(body))'を使ってデバッグしようとすると、 – shawon191

関連する問題