前端处理返回的number类型超出16位的问题 ,在axios中统一处理
造成原因:js的number类型有个最大安全值,即2的53次方(9007199254740992),超过这个值就会出现精度丢失的问题。
后端处理:将数字类型(Long)变量转为字符串类型(String)即可
前端处理:
1.安装库 npm i json-bigint
npm i json-bigint
2.json-bigint 会把超出 JS 安全整数范围的数字转为一个 BigNumber 类型的对象,对象数据是它内部的一个算法处理之后的,我们要做的就是在使用的时候转为字符串来使用。在axios 中引用
import axios from 'axios'import jsonBig from 'json-bigint'var json = '{ "value" : 9223372036854775807, "v2": 123 }'console.log(jsonBig.parse(json))const request = axios.create({baseURL: '你接口的基础路径', // 接口基础路径// transformResponse 允许自定义原始的响应数据(字符串)transformResponse: [function (data) {try {// 如果转换成功则返回转换的数据结果return jsonBig.parse(data)} catch (err) {// 如果转换失败,则包装为统一数据格式并返回return {data}}}]
})export default request
3.完美解决