处理后端返回数据超出 JS 安全整数范围问题

Number.MAX_SAFE_INTEGER // 9007199254740991

JSON.parse('{ "id": 9007199254740995 }') // { id: 9007199254740996 }

项目所使用的后端接口数据中包含超出 JavaScript 安全整数范围的数字,所以也需要PC 端项目一样使用 json-bigint 将后端返回数据处理一下才能正确使用。 

 

1、安装依赖

# yarn add json-bigint
npm i json-bigint

2、引入文件

import jsonBig from 'json-bigint'

 3、使用就完事了

// axios 开放了自定义转换后端返回数据的 API
// data 就是后端返回的原始数据
request.defaults.transformResponse = [function (data) {
  try {
    // 现在我们定制使用 json-bigint 来帮我们处理转换原始的 JSON 格式字符串
    // 这个方法类似于 JSON.parse,只不过它能把数据中的超出 JS 安全整数范围的数字给处理成正确的
    // 它内部有自己的算法,它会把大数字转为一个对象,我们在使用的时候把对象.toString() 就得到字符串形式的 id 了
    // 如果转换成功则返回成功的结果给请求使用
    // 如果转换失败则进入 catch,返回一个空对象
    return jsonBig.parse(data)

    // 它默认是这样的
    // return JSON.parse(data)
  } catch (err) {
    console.log('转换失败', err)
    return {}
  }
}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值