fetch 抓取的JSON 数据为什么格式不对?

我后台返回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)),推荐

以上是fetch 抓取的JSON 数据为什么格式不对?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>