如何从节点js服务器读取json响应?

时间:2016-12-26 15:59:12

标签: javascript json node.js rest

我有一个NodeJS REST API。在那个API中,我必须调用另一个第三方API来获取一些数据。它为我们提供了JSON数据。这就是我如何将数据响应设置为我的REST URL响应。

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\":\"adam.taylor@gmail.com\",\"MiscInformation\":\"\",\"Message\":\"CUSTOMER_ACTIVE\"}},\"Submission\":{\"@attributes\":{\"SubmitterRef\":\"0778798654\",\"Submitter\":\"demoName\"}}}"

但是当我在浏览器中使用第三方网址时,我得到了干净又漂亮的JSON输出。如下所示。

(没有\符号)

没有其他" \"符号和它的清洁。我需要做的是我需要访问此响应的一些值。在节点js中。我需要发送如下响应。

  

res.json(body.Response);

但它是空的。而且我还需要将所有这些值都用于变量。我怎么能这样做?

1 个答案:

答案 0 :(得分: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);
相关问题