1.原因分析:
1)JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数)
1位(s) 用来表示符号位,0表示正数,1表示负数
11位(e) 用来表示指数部分
52位(f) 表示小数部分(即有效数字)
精准表示的最大整数是 2^{53} - 1,十进制为 9007199254740991
2)Java的Long类型的有效位数是63位(扣除一位符号位),其最大值为2^{63}-1,十进制为9223372036854775807
2.解决方案:
1)配置文件(全局配置)
spring:
jackson:
generator:
write_numbers_as_strings: true
2)需要的Long字段上添加Jackson注解(局部配置)
@JsonSerialize(using = ToStringSerializer.class)
3.创建一个Jackson2ObjectMapperBuilderCustomizer,对Long型数据的数据序列化进行特殊处理,实现对Jackson2ObjectMapperBuilder的个性化定制(全局配置)。
@Configuration
public class MyJacksonConfig {
@Bean
public Jackson2Obj