后台到前台Long类型数据精度丢失 springboot1.0和spring2.0版本处理方式的区别
2020-01-14 06:20
344 查看
spring1.0+的全局转换器
配置类实现WebMvcConfigurerAdapter或者WebMvcConfigurer,然后重写configureMessageConverters方法。
注:springMvc也可以这样处理
@Configuration public class MvcConfigure implements WebMvcConfigurer { /** * @Description 返回值序列化配置 * @Date 10:34 2019/10/28 **/ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule(); //将long类型转为字符串 防止精度丢失 simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); jackson2HttpMessageConverter.setObjectMapper(objectMapper); converters.add(jackson2HttpMessageConverter); } /** * @Description 跨域配置 * @Date 10:33 2019/10/28 **/ @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedMethod("*"); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.setAllowCredentials(true); urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); return new CorsFilter(urlBasedCorsConfigurationSource); } }
如果你的项目用的是springboot2以上的版本,虽然注入了进去,但是精度依然丢失
spring2.0+的全局转换器
## 方法一:
在配置文件中加入
jackson: generator: write_numbers_as_strings: true
该方式会强制将所有数字全部转成字符串输出,包括按照timestamp时间戳以及定义的统一返回对象0成功 1失败也是如此。
## 方法二:
在启动类上加入下面配置
@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); //解决Long类型精度丢失问题 } }; return customizer; }
## 方法三:
也是通用方法无论什么版本都可以,但是springmvc需要自己通过Maven配置jackson依赖,springboot默认依赖jackson包,不需要额外引入依赖.
在返回实体的set方法上加上
@JsonSerialize(using = ToStringSerializer.class)
@JsonSerialize(using = ToStringSerializer.class) //防止Long类型的精度丢失 public void setCoId(Long coId) { this.coId = coId; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Spring boot处理Long类型的Json数据,在Js代码调用时精度丢失的问题
- 后台Long类型数据到前台出现精度丢失问题,以及时间格式化处理
- Spring boot处理Long类型的Json数据,前端调用精度丢失
- springboot+jersay环境下解决long类型到前台精度丢失的问题
- 当使用ajax 由前台像后台post 数组类型数据的一些问题(基于springboot)
- springmvc/springboot处理前台字符串日期自动转换成后台date类型的三种办法
- 关于java中long类型的数据转换json传到前台时丢失精度问题的解决办法
- springmvc/springboot处理前台字符串日期自动转换成后台date类型的三种办法
- Spring Boot 框架,封装后台向前台传输的数据的类 ResultVO
- 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案
- spring-boot统一处理返回给前台的数据格式(避免返回异常堆栈信息,干扰用户体验)
- Java字节流和字符流的区别 (方法区别 操作基本单元区别 操作方式区别 处理数据类型区别) 之个人总结
- JAVA Long类型数据在js中显示精度丢失
- SpringBoot2.0与WebScoket集成实现后台向前台页面推送消息
- Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
- double类型数据做加和操作时会丢失精度问题处理
- Spring MVC处理前台到后台绑定时间格式、doble等数据的解决方式
- 【解决方案】jison解决JS处理后台返回的Long型数据精度丢失
- spring boot 返回json数据long型精度丢失问题
- 后端将Long类型数据传输到前端出现精度丢失的问题(品优购订单号orderId精度丢失问题)