问题描述
使用SpringBoot将Long类型值返回JSON到前端,发现数值最后几位显示为0,出现精度丢失问题。
解决方法
只需要在springboot中配置自定义类型转换器,将Long类型转换为String类型即可。代码如下:
@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
public class DemoApplication {
/**
* 解决Jackson导致Long型数据精度丢失问题
* @return
*/
@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;
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}