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

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

json 复制代码
{
  "id": 260561497745260544  // int8
}

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

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

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

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

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

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

或者全局生效:

yaml 复制代码
spring:
  jackson:
    generator:
      write_numbers_as_strings: true
相关推荐
Tao____1 分钟前
如何对接Modbus-tcp协议(使用Thinlinks物联网平台)
java·物联网·网络协议·tcp/ip·modbus
怕浪猫2 分钟前
React从入门到出门 第五章 React Router 配置与原理初探
前端·javascript·react.js
jinmo_C++2 分钟前
从零开始学前端 · HTML 基础篇(一):认识 HTML 与页面结构
前端·html·状态模式
鱼跃鹰飞5 分钟前
经典面试题:K8S的自动缩扩容和崩溃恢复
java·容器·kubernetes
鹏多多9 分钟前
前端2025年终总结:借着AI做大做强再创辉煌
前端·javascript
Coder_Boy_9 分钟前
Spring Boot 事务回滚异常 UnexpectedRollbackException 详解(常见问题集合)
java·spring boot·后端
青云交11 分钟前
Java 大视界 -- 基于 Java+Redis Cluster 构建分布式缓存系统:实战与一致性保障(444)
java·redis·缓存·缓存穿透·分布式缓存·一致性保障·java+redis clus
哈__12 分钟前
React Native 鸿蒙跨平台开发:Vibration 实现鸿蒙端设备的震动反馈
javascript·react native·react.js
不知疲倦的仄仄12 分钟前
第五天:深度解密 Netty ByteBuf:高性能 IO 的基石
java·开源·github
WebGISer_白茶乌龙桃14 分钟前
Cesium实现“悬浮岛”式,三维立体的行政区划
javascript·vue.js·3d·web3·html5·webgl