前言
BigDecimal数据类型的字段在前后端交互的时候可能会出现.00没有,在后端抓字段修改记录的时候会出现200和200.00,会被抓出是被修改了
解决办法
使用@JsonSerialize注解处理BigDecimal自定义方法(BigDecimal 类型的字段,指定保留两位小数)
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;
/**
* 解决BigDecimal .00不显示问题
*/
public class BigDecimalSerialize extends JsonSerializer<BigDecimal> {
@Override
public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (null != bigDecimal) {
jsonGenerator.writeString(bigDecimal.setScale(2, BigDecimal.ROUND_HALF_DOWN).toPlainString());
} else {
jsonGenerator.writeString(BigDecimal.ZERO.toPlainString());
}
}
}
在实体类上加上注解
@JsonSerialize(using = BigDecimalSerialize.class)
private BigDecimal baseInFee;
这样前端就会收到后端返回的200.00,而不是200了