首页 新闻 搜索 专区 学院

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

0
[已解决问题] 解决于 2022-08-23 09:42

我后台返回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数据?

泰德的主页 泰德 | 初学一级 | 园豆:15
提问于:2022-08-22 13:15
< >
分享
最佳答案
0

是这样的,JSON有严格模式,严格模式要求字段名也要用双引号。这个你最好后端处理下,或者用 eval('(' + d +')')
还有一种方法,先JSON.stringify再parse,也就是 JSON.parse(JSON.stringify(d))

JSON.stringify会转字符串并且字段名也会自动加上双引号。

总结三种方案

1、后端处理(推荐)

2、 eval('(' + d +')') ,可能有安全问题,不是很推荐

3、JSON.parse(JSON.stringify(d)),推荐

奖励园豆:5
灯塔下的守望者 | 初学一级 |园豆:119 | 2022-08-22 13:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册