原因:后端返回的id数字长度超过16位的数字会出现精度丢失。所以使用json-bigint来解决。
解决方式:在发送请求时, 在transformResponse参数,使用第三方的包json-bigint。它在把json字符串转json对象的过程中,自动识别大整数,把大整数转成一个对象来表示,这样就不会产生精度丢失的问题了。
url:url,
method:'post',
headers: {
'Content-Type': 'application/json;charset=utf8'
},
transformResponse: [
function (resData) {
return JSONBig.parse(resData);
}
],
data:data
坑来了,当json-bigint工作时,会将整数转化为对象,分为几段,若某段是以0开头,他将会隐去0,导致id不完整。
解决方法:使用PadStart(x,y)。x代表所需长度,若字符串小于这个长度就在字符串开头加上几位y
res.data.forEach((e)=>{
//由于第二段开头是0,bigint将会隐去0
e.id=e.id.c[0].toString()+JSON.stringify(e.id.c[1]).padStart(14,0)
})