【踩坑记录】springboot打包后Bigdecimal精度丢失问题
  VkbLvSla65Gv 2023年12月22日 27 0

最近在做项目是提测后测试人员反馈返回的金额精度丢失所有的金额数量没有小数点.00,在研发过程中没发现此情况(idea启动项目)

【踩坑记录】springboot打包后Bigdecimal精度丢失问题_bigdecimal

排查代码

【踩坑记录】springboot打包后Bigdecimal精度丢失问题_springboot_02

json返回

【踩坑记录】springboot打包后Bigdecimal精度丢失问题_字符串_03

idea启动一切正常,未发现上述情况,打包后就发现精度丢失。

解决方案

把BigDecimal的序列化值改成字符串类型即可。

经过修改,加上以下代码

@Configuration
public class JacksonConfig {
    @Bean
    @Primary
    @ConditionalOnMissingBean(ObjectMapper.class)
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        simpleModule.addSerializer(BigDecimal.class, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);
        return objectMapper;
    }

}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
VkbLvSla65Gv