查询Long类型的id数据时,返回客户端,浏览器会将json格式的字符串转化为js对象使用,Java数值类型数据对应js中的数据类型是number,因为Long类型的数字超过了js的数字处理范围,所以会出现精度丢失的问题。
最近在开发中,碰到一个问题,关于数据库19位Long类型查询后,返回给前端后,精度丢失。
1732596466118361091 => 1732596466118361000
解决方案(前端处理)
前端一般都是用axios进行数据请求,通过引入json-bigint来解决
yarn add json-bigint
// 或
npm install json-bigint
在封装的全局的网络请求工具类中添加
import JSONBIG from 'json-bigint'
/* 解决前端处理19位id精度丢失问题 */
axios.defaults.transformResponse = [
function(data) {
const json = JSONBIG({
storeAsString: true
})
const res = json.parse(data)
return res
}
]