Springboot 前后端交互 Long类型传输 前端获取数据受限

博客讨论了在项目中遇到的JavaScript处理64位Long类型数据溢出的问题,由于JavaScript最大支持53位整数,导致超过此范围的数值可能出错。解决方案包括后端将Long类型数据转换为字符串返回,或者使用特定注解确保数据转换。这两种方法都能有效避免前端数值溢出,确保数据传输的准确性。
摘要由CSDN通过智能技术生成

 项目中,在存储userId和instructioId这些字段时,都是使用64为长整数Long类型(数据库的bigint);

后端将数据从DB中查询出来后,返回的userId和instructionId是Long类型

问题原因
1.后端使用64位存储长整数(long),最大支持9223372036854775807

2.前端的JavaScript使用53位来存放,最大支持9007199254740992,超过最大值的数,可能会出现问题(得到的溢出后的值);

解决方式
可以从后端或者前端两方来处理(其中一方进行处理即可,或者两方都处理),需要双方约定好规则即可。

一、解决方法一

通过配置文件进行转换,统一将后端数据值转为字符串类型返回给前端,全局转换效果

spring:
  jackson:
    generator:
      write_numbers_as_strings: true

二、解决方法二

通过注解进行转换,和第一种方法类似,不过为局部转换效果

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

总结到此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值