我有一个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);
但它是空的。而且我还需要将所有这些值都用于变量。我怎么能这样做?
答案 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);