SpringBoot全局配置long转String丢失精度问题解决方案
web项目中,前端JS使用Java后端传过来的Long/long会丢失精度。
后端将返回的数据改为String使用即可
第一种
自己建个配置类
extendsWebMvcConfigurerAdapter已经被弃用,直接实现WebMvcConfigurer该接口就行了
@EnableWebMvc
@Configuration
publicclassWebDataConvertConfigimplementsWebMvcConfigurer{
publicvoidconfigureMessageConverters(List>converters){
MappingJackson2HttpMessageConverterjackson2HttpMessageConverter=newMappingJackson2HttpMessageConverter();
ObjectMapperobjectMapper=newObjectMapper();
/**
*序列换成json时,将所有的long变成string
*因为js中得数字类型不能包含所有的javalong值
*/
SimpleModulesimpleModule=newSimpleModule();
simpleModule.addSerializer(Long.class,ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE,ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
第二种
前提是使用Jackson2
@Configuration
publicclassJacksonConfig{
/**
*Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题
*@returnJackson2ObjectMapperBuilderCustomizer注入的对象
*/
@Bean
publicJackson2ObjectMapperBuilderCustomizerjackson2ObjectMapperBuilderCustomizer(){
Jackson2ObjectMapperBuilderCustomizercunstomizer=newJackson2ObjectMapperBuilderCustomizer(){
@Override
publicvoidcustomize(Jackson2ObjectMapperBuilderjacksonObjectMapperBuilder){
jacksonObjectMapperBuilder.serializerByType(Long.TYPE,ToStringSerializer.instance);
jacksonObjectMapperBuilder.serializerByType(Long.class,ToStringSerializer.instance);
}
};
returncunstomizer;
}
自己项目使用的时候,第二种未能生效。可能是由于不是使用的jackson2??。使用第一种可以,遂采用了第一种
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短