处理后端返回数据超出 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 {}
  }
}]
发布了1 篇原创文章 · 获赞 0 · 访问量 2
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览