java中BigDecimal转json精确小数点的问题

项目使用了 spring boot 作为基础架构,然而 spring boot 的 json 默认使用了 jackson,处理如下

创建一个类用户处理 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;

public class BigDecimalSerialize extends JsonSerializer {

    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if (o != null && o instanceof BigDecimal) {
            BigDecimal bigDecomal = (BigDecimal) o;
            jsonGenerator.writeString(bigDecomal.setScale(2, BigDecimal.ROUND_DOWN) + "");
        }
    }
}

然后在代码中添加如下代码

@JsonSerialize(using = BigDecimalSerialize.class)
private BigDecimal cmpayNakedPrice;

执行正常