2016-12-26 139 views
0

我有一個NodeJS REST API。在該API中,我必須調用另一個第三方API來獲取一些數據。它將數據作爲JSON提供給我們。這就是我如何將數據響應設置爲我的REST URL響應。如何從節點js服務器讀取json響應?

request('http://dev.demo.com/api/v1/wow/getFreeviewLoginAndCallAPI/123', function (error, response, body) { 
if (!error && response.statusCode == 200) { 
    console.log(body); 
    res.json(body); 
} 

});

然後我得到這樣的回覆。

"{\"Response\":{\"@attributes\":{\"Package\":\"MONTHLY\",\"Surname\":\"Taylor\",\"CSN\":\"104801\",\"Email\":\"[email protected]\",\"MiscInformation\":\"\",\"Message\":\"CUSTOMER_ACTIVE\"}},\"Submission\":{\"@attributes\":{\"SubmitterRef\":\"0778798654\",\"Submitter\":\"demoName\"}}}" 

但是當我在瀏覽器中使用該第三方URL時,我得到了一個乾淨漂亮的JSON輸出。如下所示。

(無\符號)

沒有其他「\」符號,它很乾淨。我需要做的是我需要訪問這個響應的一些值。在節點js中。我需要發送如下響應。

res.json(body.Response);

但它是空的。而且我還需要將所有這些值都用於變量。我怎樣才能做到這一點 ?

+0

這看起來像一個字符串。你有沒有嘗試解析它? http://stackoverflow.com/questions/45015/safely-turning-a-json-string-into-an-object –

回答

1

第三方API的響應是字符串,你可能需要在發送給客戶端之前進行解析。

request('http://dev.demo.com/api/v1/wow/getFreeviewLoginAndCallAPI/123', function (error, response, body) { 
if (!error && response.statusCode == 200) {   
    res.json(JSON.parse(body)); 
}}); 

不能使用body.Response直接,因爲它的字符串不反對,首先對其進行分析,然後發送給客戶端,就像

var json = JSON.parse(body); 
res.json(json.Response); 
+0

是的,現在它的工作原理是JSON。但是我仍然不能這樣使用。 「res.json(JSON.parse(body.Response));」 –

+0

這是我得到的錯誤 - > SyntaxError:意外的令牌ü –

+0

var json = JSON.parse(body); res.json(json .Response); – Sumeet