最近项目上遇到个问题:我这从后端接收数据,然后拿着数据传到后端的对应位置。
报错了。。。
经过排查 后端发给我的时候数据是Number 长度为21 数据正常 我前端接到数据后却最后2位变成00
后端将Number类型改用字符串类型传给我 问题解决。
问题原因是在于后端发送数据时为方便传送数据将数据JSON.stringify()化,而前端接到数据后,需要将数据解析,而在解析的过程中 会导致Number超过 19位后精度丢失 变成上述尾部变成00问题,
而解决办法是:
使用JSONbig 插件 原理自行百度 鄙人理解大体是在JSON解析的时候做下数据处理 是转string还是加大精度长度我还没有细细研究 - -
安装依赖
npm i JSONbig --save
在axios.create添加
const service = axios.create({
baseURL: devIp + '', // 测试IP
timeout: 100000, // request timeout,
// 这是核心
transformResponse: [function (data) {
try {
// 如果转换成功则返回转换的数据结果
return JSONbig.parse(data)
} catch (err) {
// 如果转换失败,则包装为统一数据格式并返回
return {
data
}
}
}]
});