spring boot 返回Long类型给前端,丢失精度问题
Spring Boot返回Long类型给前端时,可能会遇到精度问题,特别是当Long值超过JavaScript能准确表示的安全整数范围(-2^53 + 1 到 2^53 - 1)时。这个问题通常是因为前端JavaScript处理数字时使用了IEEE 754标准的双精度浮点数,导致精度问题。
解决方法:
- 使用String传递:在后端将Long类型转换为String类型,然后返回给前端,前端将其当作字符串处理。
- 使用JSON格式化库:比如Jackson,可以配置以确保所有的数值类型都以字符串形式输出。
- 使用
@JsonSerialize(using = ToStringSerializer.class)
注解:在实体类的Long属性上添加此注解,强制序列化为字符串。
示例代码:
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
public class MyEntity {
@JsonSerialize(using = ToStringSerializer.class)
private Long myLongValue;
// 省略其他属性和方法
}
通过以上任一方法,可以有效解决Spring Boot返回Long类型给前端时的精度问题。
评论已关闭