json-bigint处理大整数问题

1,280 阅读1分钟
现象: 通过axios请求回来的响应中包含大整数字段(id:9223372036854776000),数据在chrome里的调试工具response和preview两种状态显示id数值不同;

原因: response中的看到的数据格式其实是字符串(axios请求回来的数据本质上是字符串格式),preview其实是用了JSON.Parse(字符串) 给我们做美化(格式化),这个转换过程中,一般不会出问题,但是,如涉及大数(一个很大的整数,超过了javascript最大的处理能力),就会产生转换精度丢失------- 就产生了错误了。

解决办法: 使用第三方包解决;
axios中包含配置项 transformResponse, 在传递给 then/catch 前,允许修改响应数据

const jsonrpcAxios = axios.create({
  timeout: 10000,
  method: 'post',

  transformResponse(data) {
    // 对 data 进行任意转换处理
    const ret = JSONbig.parse(data); //处理大数字整数
    return ret;
  },
});

文章参考: blog.csdn.net/weixin_5063…