最近在做项目是提测后测试人员反馈返回的金额精度丢失所有的金额数量没有小数点.00,在研发过程中没发现此情况(idea启动项目)
排查代码
json返回
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;
}
}