2015-10-12 40 views
-3

對於我的node.js express應用程序,我使用Request模塊通過REST API請求數據。返回的JSON屬性在我的node.js express應用程序中不是字符串

這是我在要求執行app.js

var request = require('request') 
request.post('https://getpocket.com/v3/get', { 
    headers: {'content-type':'application/json'}, 
    body: JSON.stringify({ 
    consumer_key:'...', 
    access_token:'...', 
    contentType:'article', 
    sort:'title' 
    }) 
}, function (err, res, body) { 
    console.log(JSON.parse(body)) 
}) 

而且我得到JSON響應爲以下

{ status: 1, 
    complete: 1, 
    list: 
    { '890245271': 
     { item_id: '890245271', 
     resolved_id: '890245271', 
     given_url: 'http://davidwalsh.name/open-graph-data-nodejs', 
     given_title: 'Get Open Graph Data with Node.js', 
     ... } 
    }, 
    error: null, 
    search_meta: { search_type: 'normal' }, 
    since: 1444630917 } 

的問題是,這是無效的JSON作爲JSON屬性需要是字符串。我在這裏錯過了什麼?

+0

,你在第二個代碼塊顯示響應是什麼'的console.log(JSON.parse(體)) '日誌? – Cerbrus

+0

是的,這就是我在終端中看到的 –

+0

然後你的應用工作得很好。您正在使用'JSON.parse'將'body'中的JSON響應解析爲JavaScript'object'。 – Cerbrus

回答

3

解析的JSON:

console.log(JSON.parse(body)) 
// Here ----^^^^^^^^^^^^^^^^ 

所以你看到的是從解析JSON產生的JavaScript對象的console.log表示。

如果你想看到的,而不是JSON,只是不解析:

console.log(body); 
+0

謝謝。畢竟,我想我對JSON的瞭解還不夠。對於初學者來說,你會介意分享什麼時候解析JSON,何時不分析? –

+0

@SeongLee:JSON是*文本*符號,所以當你在代碼中處理JSON時,你正在處理一個字符串。如果您想編寫處理該JSON字符串中的信息的代碼,請解析它。因此,例如,如果您有JSON字符串「{」answer「:42}」,並且您想知道答案是什麼,那麼可以解析字符串('var obj = JSON.parse(str);')和然後訪問數據('obj.answer')。 –

+0

@SeongLee:有一件事可能會讓你感到困惑的是,當他們真正指「JavaScript對象」時,那些說出「JSON」的困惑人物的數量。你總是看到這一點:「我有這個json:'var obj = {answer:42};'這不是JSON,它是JavaScript代碼,但這是一個非常常見的錯誤,所以可能會讓你感到困惑。你已經看到有人這樣做,規則很簡單:如果你正在編寫與它交互的代碼,而且它不是*,那麼它不是JSON –

相關問題