项目中,在存储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;
总结到此。