一、问题
1、定义后台返回数据, 模拟大数
const str = '[{"id": 3019871302004110900}, {"id": 3403763166642205205}, {"id": 3982321342271276890}]'
2、用JSON.parse转换,可以看到转换结果出现了问题,最后几位数字不一致
二、原因
JS有效“安全数字”有范围,超出范围则可能出现精度问题
三、解决
使用第三方包 json-bigint
1、下载 json-bigint 包,在终端输入以下命令
npm i json-bigint
//若出现错误,用下面命令下载
npm i json-bigint -force
2、引入并使用 jsonBig.parse 进行转换
const jsonBig = require('json-bigint')({ storeAsString: true })
console.log(jsonBig.parse(str))
打印转换后的结果,成功解决问题