springboot返回json数据时double或者bigdeimal保留两位小数的通用处理方法(个人记笔记)

因为springboot默认采用jackson序列化,而jackson序列化又可以自定义序列化器,所以我们在返回double或者bigdeimal类型数据时,可以指定序列化器,而不用在代码里面处理这样可以避免重复的处理代码

1、自定义序列化器:

public class CustomDecimalSerialize extends JsonSerializer<BigDecimal> {

    @Override
    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers)
            throws IOException, JsonProcessingException {
        if (value != null) {
            value = value.setScale(2, BigDecimal.ROUND_HALF_UP);
            gen.writeString(value.toString());
        }
    }
}

springboot返回json数据时double或者bigdeimal保留两位小数的通用处理方法(个人记笔记)_第1张图片

2、在double或者bigdecimal类型字段上指定自定义的序列化器:

//指标值
@JsonSerialize(using = CustomDecimalSerialize.class)
protected BigDecimal value;

 springboot返回json数据时double或者bigdeimal保留两位小数的通用处理方法(个人记笔记)_第2张图片

 最终的效果:

springboot返回json数据时double或者bigdeimal保留两位小数的通用处理方法(个人记笔记)_第3张图片 

这个借鉴了这篇博客:Jackson转换实体 double 保留两位小数_挥手凝淡墨的博客-CSDN博客

你可能感兴趣的:(spring,boot,json,java)