JSON.parse解析大整数踩坑
项目返回的id是long类型,比较大,简洁一下前端的代码如下
let jsonStr = `{"id": 1921823983347568644,"uid": 1921823983347568344
}`;
console.log(JSON.parse(jsonStr));
输出结果:
可以看到id的最后两位变成了00,uid的最后三位变成了400,原因是js序列化整数为Number的时候数据超出了Number的范围,导致出现了不可预测的结果
JS的数字只有在[-(Math.pow(2,53)-1), Math.pow(2,53)-1]
内的数字才是符合规范
最好的解决方案是后端将大整数返回类型改为String