Node.js从JSON的api问题接受数据

时间:2019-03-12 08:58:36

标签: node.js api express

我正在尝试从供应商提供的API中获取一些JSON数据,但是我在Google上尝试时遇到了错误,人们在很多评论中说要使用JSON.Stringify,但就我而言,JSON.Stringify没有帮助我,它返回了一个像{}

这样的空数组

来自api的休假如下

[{ SYMBOL: 'FOREX',
CODE: 'REG',
LST: '219.50',
LTP: '12:52:35'}]

但我的愿望是

[{ "SYMBOL" : "FOREX",
"CODE": "REG",
"LTP": '219.50',
"LST": '12:52:35'}]

3 个答案:

答案 0 :(得分:0)

您的响应是针对文本的,要将文本转换为JSON字符串,

let text = `[{ SYMBOL: 'FOREX',
CODE: 'REG',
LST: '219.50',
LTP: '12:52:35'}]`

let jsonStr = JSON.stringify(eval("(" + text + ")")); // Convert Object String to JSON
console.log(jsonStr);

注意::请确保您的供应商是受信任的来源,因为eval注入攻击打开了您的代码,如果您对此感到担心,请请与您的供应商联系以提供JSON响应。

参考文献:Convert object string to JSON

答案 1 :(得分:0)

如果供应商的API提供的JSON结果确实是这样的:

[{ SYMBOL: 'FOREX',
CODE: 'REG',
LST: '219.50',
LTP: '12:52:35'}]

我必须通知您这是无效的JSON。在JSON中,属性应为双引号之间的字符串,否则无法解析。

您所需的答复是正确的形式。供应商形成输出的方式可能有错误。

tl; dr:供应商的API给您的是JavaScript对象,而不是JSON。

答案 2 :(得分:0)

好的,所以我所做的就是使用STRINGFY作为中间件,它解决了我的问题,感谢您的帮助,他们真的很赞赏。