10-内容管理-删除-数字最大安全值
现象:后端给的值太大了,前端处理不了;获取到的数据值是不安全的
按F12检查——>点击Network 并刷新且看后端传给的数据,
点击左侧数据,①看右侧Response,显示数据格式为 json文本 不能直接用,需要转化为json对象;
②看右侧Preview中 json对象
-
“id”: 1166528593157685248 在response中 json文本
-
id: 1166528593157685200 在preview中 json对象 (JSON.parse()转换)
-
在项目中是 axios 默认使用JSON.parse()转换,
同一id值转化过程中发生变化,不能直接使用
-
现象原因:后台返回的数字的值 超出了js数字的最大安全值
-
最大值为:2的53次方 (Number.MAX_SAFE_INTEGER 获取)
-
JSON.parse() 有误差
-
数值运算 有误差
-
-
处理问题:转换的时候改成其他的格式
-
使用 json-bigint 的js插件
使用方法:axios中json-bigint处理json数据最大值无法准确获取
网址:https://www.npmjs.com/package/json-bigint -
安装 npm i json-bigint
-
导包 api/index.js
var JSONbig = require('json-bigint')
-
使用:
JSONbig.parse(json)
-
覆盖axios的转换方式,使用上面的方式。
transformResponse: [function (data) { // 对 data 进行任意转换处理 return data; }],
-
最终代码:api/index.js
import JSONBIG from 'json-bigint'
// 默认配置 转换响应数据
axios.defaults.transformResponse = [data => {
// 对data(后台的原始数据)进行转换
return JSONBIG.parse(data)
}]