Java 后端传 Long 值到前端时精度丢失问题

后端的值传递到前端最后会丢失一些精度。

问题出现的场景是我在做一个简单的学生管理系统时遇到的,

前端需要使用到的数据:

// 班级选中
$('#recipient-grade option').each(function () {
    var grade = $(this).val();
    if (grade == student.grade.id) {
    $(this).prop("selected", true);
    }
});

后端传过来的数据 Grade 类的 idLong 类型,采用数据库的雪花算法生成,传递到前端时,js 的数字类型接收时会丢失一些精度,因为 js 的数字类型不够所以就出现了这样的问题。

然后,这个问题我觉得出现得也算比较早了,解决方案也比较成熟了,我觉得最简单的解决方案就是给实体类的属性加一个相关的注解:

@JsonSerialize(using = ToStringSerializer.class)
private Long id;

引用的包为:

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

参考:https://blog.csdn.net/u010398771/article/details/103520893


Java 后端传 Long 值到前端时精度丢失问题
http://fanyfull.github.io/2022/06/28/Java-后端传-Long-值到前端时精度丢失问题/
作者
Fany Full
发布于
2022年6月28日
许可协议