查询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
  }
]