2016-01-22 82 views
0

我在NodeJS中獲取一些JSON字段時遇到問題。 這裏是我的JSON結構:在JSON中獲取特定字段

{ 
    "header": 
    { 
     "file1":0, 
     "file2":1, 
     "subfiles":{ 
      "subfile1":"true", 
      "subfile2":"true", 
     } 
    }, 

    "response": 
    { 
     "number":678, 
     "start":0, 
     "docs":[ 
      { 
       "id":"d3f3d", 
       "code":"l876s", 
       "country_name":"United States", 
       "city":"LA" 
      }, 
      { 
       "id":"d2f2d", 
       "code":"2343g", 
       "country_name":"UK", 
       "city":"London" 
      } 
     ] 
    } 
} 

如何訪問特定的字段(ID,城市或COUNTRY_NAME)在結構上也是這樣嗎? 我想在NodeJS中的東西,但我不能得到特定的領域。

request('http://url.com', function (error, res, body) { 
    if (!error && res.statusCode == 200) { 
    console.log(body) 
    } 

    res.on('data', function(chunk){ 
     body += chunk; 
    }); 

    res.on('end', function(){ 
     var urlResponse = JSON.parse(body); 
     console.log("Got a response: ", urlResponse.response.docs.city); 
    }); 
}); 
+1

你有「文檔」的數組,所以你必須選擇一個。 – Joe

回答

1

嘗試使用data變量來積累的數據塊,然後data.toString()迫使緩衝的內容串,這將是解析的JSON使用。

此外,您需要訪問docs陣列的特定成員。

+0

我可以使用JSON.stringify(body)而不是toString()嗎? – corry

+0

@corry你可以在你的代碼中試試這個:P –

+0

不,因爲內容是緩衝的。在解析爲JSON之前,您需要將緩衝的內容轉換爲字符串。 – Josh

1

你有沒有嘗試過這樣的事情:

thatObject.response.docs.forEach((element) => { console.log(element.id); }); 

財產碼頭是一個數組,所以你可以使用的功能:的forEach,或者,或者任何你想

+0

我正在用'for(var i = 0; i corry

+1

嘿!它看起來像你使用請求模塊?我從來沒有使用它,但嘗試這樣的事情:(如何開始在這裏寫一個新的行?))用'body'替換'data'。 –