【bug】long 类型数据响应被浏览器截断导致出错

long类型数据前端响应截断问题及解决
一、问题 

在使用雪花算法生成 id 作为主键,作为响应传递到浏览器时,会出现前端显示的数据和后端实际数据不一致的情况:

浏览器收到的响应:

后端实际传输的数据:

可见:long 类型的数据响应在过大时,会导致数据错误

这是浏览器 JavaScript 中 Number 类型的精度限制(最大安全整数为2^53-1)导致的,如果 Long 类型的值超过了这个范围,就可能导致精度丢失。

二、解决办法

使用 @JsonSerialize 注解将过大的 Long 类型数据转换为 String 类型数据即可:

@Getter
@Setter
public class QuestionVO {
    // long 型数据过大返回给前端会发生数据截断导致数据错误, 需要转换成 string 类型
    @JsonSerialize(using = ToStringSerializer.class)
    private Long questionId;

    private String title;

    private Integer difficulty;

    private String createName;

    // 配置日期自动格式化
    @JsonFormat(pattern = "yyyy-HH-dd HH:mm:ss")
    private LocalDateTime createTime;
}

此时会得到正确响应:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值