SpringBoot Jackson序列化JS精度丢失的解决方法分享
下文笔者讲述SpringBoot中JS精度丢失的解决方法分享,如下所示
问题出现的原因
例: 数据库中使用bigint Java中使用Long 前端则出现JS精度丢失
方式1:属性序列化注解@JsonSerialize
将对象中的指定属性以文本的方式进行序列化 配置@JsonSerialize的id和age被转换成了文本
@Data
class User{
@JsonSerialize(using = ToStringSerializer.class)
Long id;
String name;
@JsonSerialize(using = ToStringSerializer.class)
Integer age;
Short gender;
}
方式2:全局配置,将数值类型转换为文本
application.yml
中添加相应设置
spring:
jackson:
generator:
write_numbers_as_strings: true #序列化的时候,将数值类型全部转换成字符串返回
方式3:单类型转换
自定义一个Jackson对象转换构造器
将指定类型以指定的序列化方式进行转换
如
碰见Long、Double类型
才转换为文本
例
@Bean("jackson2ObjectMapperBuilderCustomizer")
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
Jackson2ObjectMapperBuilderCustomizer customizer = new Jackson2ObjectMapperBuilderCustomizer() {
@Override
public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance)
.serializerByType(Long.TYPE, ToStringSerializer.instance);
}
};
return customizer;
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


