SpringBoot全局配置long转String丢失精度问题解决方案

网友投稿 980 2022-11-24


SpringBoot全局配置long转String丢失精度问题解决方案

web项目中,前端js使用java后端传过来的Long/long会丢失精度。

后端将返回的数据改为String使用即可

第一种

自己建个配置类

extends WebMvcConfigurerAdapter 已经被ffzrQWtPi弃用,直接实现WebMvcConfigurer该接口就行了

@EnableWebMvc

@Configuration

public class WebDataConvertConfig implements WebMvcConfigurer {

public void configureMessageConverters(List> converters) {

MaffzrQWtPippingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();

ObjectMapper objectMapper = new ObjectMapper();

/**

* 序列换成json时,将所有的long变成string

* 因为js中得数字类型不能包含所有的java long值

*/

SimpleModule simpleModule = new SimpleModule();

simpleModule.addSerializer(Long.class, ToStringSerializer.instance);

simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);

objectMapper.registerModule(simpleModule);

jackson2HttpMessageConverter.setObjectMapper(objectMapper);

converters.add(jackson2HttpMessageConverter);

}

第二种

前提是使用Jackson2

@Configuration

public class JacksonConfig {

/**

* Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题

* @return Jackson2ObjectMapperBuilderCustomihttp://zer 注入的对象

*/

@Bean

public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {

Jackson2ObjectMapperBuilderCustomizer cunstomizer = new Jackson2ObjectMapperBuilderCustomizer() {

@Override

public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {

jacksonObjectMapperBuilder.serializerByType(Long.TYPE, ToStringSerializer.instance);

jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);

}

};

return cunstomizer;

}

自己项目使用的时候,第二种未能生效。可能是由于不是使用的jackson2??。使用第一种可以,遂采用了第一种


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:IDEA 错误之找不到或无法加载主类的问题
下一篇:MyBatis Plus 入门使用详细教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~