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
    //重写WebMvcConfigurerAdapterconfigureMessageConverters抽象方法    
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);
objectMapper.registerModule(simpleModule);
objectMapper.registerModule(bigDecimalModule);
objectMapper.registerModule(bigIntegerModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
}

注:WebMvcConfigurerAdapter实现了WebMvcConfigurer的所有方法,都是空实现,需要什么个性化配置,需要自己继承并重写对应的配置方法,WebMvcConfigurerAdapter实现的方法跟springmvc.xml里的配置一样,具体方法见:https://blog.youkuaiyun.com/wujiaqi0921/article/details/78324722

 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值