我后台返回JSON数据,对应的Model是:
public class barModel
{
public string unixTime { get; set; }
public string Open { get; set; }
public string High { get; set; }
public string Low { get; set; }
public string Close { get; set; }
}
序列化后返回给get 方法。
在swagger中测试,返回数据是这样:
[
{"unixTime":"1660885500000","Open":"4278.00","High":"4278.75","Low":"4277.75","Close":"4278.00"}
]
但是我在html中用fetch取到的数据,张这样:
[
{unixTime: '1660885500000', Open: '4278.00', High: '4278.75', Low: '4277.75', Close: '4278.00'}
]
如何我后面的代码就出错了:
fetch(http://localhost:5183/ES5mBar
)
.then(res => res.json())
.then(data => {
const cdata = data.map(d => {
console.log(d);
//const obj = JSON.parse(d);
return {time:parseInt(d[0])/1000,open:parseFloat(d[1]),high:parseFloat(d[2]),low:parseFloat(d[3]),close:parseFloat(d[4])}
});
.catch(err => log(err))
我应该在html中怎么解析api返回的JSON数据?
是这样的,JSON有严格模式,严格模式要求字段名也要用双引号。这个你最好后端处理下,或者用 eval('(' + d +')')
。
还有一种方法,先JSON.stringify再parse,也就是 JSON.parse(JSON.stringify(d))
。
JSON.stringify会转字符串并且字段名也会自动加上双引号。
总结三种方案
1、后端处理(推荐)
2、 eval('(' + d +')')
,可能有安全问题,不是很推荐
3、JSON.parse(JSON.stringify(d))
,推荐