前端接收了id字段,发送给后端就变了

前端初次请求用户信息,后端发送的用户 id 是长整型在数据库设计层面,长整型是最高效最节省空间的做法)。

{
  "id": 260561497745260544  // int8
}

虽然 前端的 id 字段是用 string 接收到,但实际转换时,会先用 number 存储,然后转字符串。

由于 int8 整数可能会超过 number 的表示范围,就比如我的例子:

  • 260561497745260544 远大于 Number.MAX_SAFE_INTEGER = 2^53 - 1 = 9007199254740991

因为前端 js 会向下取一个能表示的数,因此 id 变了。

解决方法:后端应该传字符串

@Data
public class UserResponseDTO {
    @JsonFormat(shape = JsonFormat.Shape.STRING)  // 字符串
    private Long id;
    ...
    }

或者全局生效:

spring:
  jackson:
    generator:
      write_numbers_as_strings: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值