springboot解决Long类型数据传⼊前端损失精度
之前在做springboot项⽬时遇到Long类型数据直接⽤@ResponseBody返回数据⾃动转换成json时,不做任何处理,⽽直接传给前端的话,在Long长度⼤于17位时会出现精度丢失的问题。之后使⽤⾃定义消息转化器全部转为String解决。代码如下:
@EnableWebMvc //默认情况下Spring Boot 使⽤WebMvcAutoConfiguration中配置的各种属性,@EnableWebMvc
使WebMvcAutoConfiguration失效,Springmvc完全由⾃⼰控制
@Configuration //标明了JsonDataConvertConfig类是⼀个配置类并且会将该类作为⼀个SpringBean添加到IOC容器内
public class JsonDataConvertConfig extends WebMvcConfigurerAdapter{
@Override
//重写WebMvcConfigurerAdapter的configureMessageConverters抽象⽅法
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new
MappingJackson2HttpMessageConverter();
// ObjectMapper 是Jackson库的主要类。它提供⼀些功能将转换成Java对象匹配JSON结构,反之亦然
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule simpleModule = new SimpleModule();
//序列化将Long转String类型
simpleModule.addSerializer(Long. class, ToStringSerializer. instance);
simpleModule.addSerializer(Long. TYPE, ToStringSerializer. instance);
SimpleModule bigIntegerModule = new SimpleModule();
//序列化将BigInteger转String类型
bigIntegerModule.addSerializer(BigInteger. class, ToStringSerializer. instance);
SimpleModule bigDecimalModule = new SimpleModule();
//序列化将BigDecimal转String类型
bigDecimalModule.addSerializer(BigDecimal. class, ToStringSerializer. instance);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论