记一次前后端交互时,long类型精度丢失问题,在后端反序列化后的值是正常的,但是传递到前端long的后几位被0填充了,经百度查询,发现js的long的数值和Java的存在差异,超过16位会存在丢失问题,故在序列化时将long转换为Stirng即可,添加如下配置即可
@Configuration
public class JacksonConfig {
/**
* Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题
*
* @return Jackson2ObjectMapperBuilderCustomizer 注入的对象
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder
.serializerByType(Long.class, ToStringSerializer.instance)
.serializerByType(Long.TYPE, ToStringSerializer.instance);
}
}