我的需求是将BigDecimal类型转为保留两位小数的String,这个时候就可以用到java中的JsonSerializer这个类来帮我实现。
1.编写一个类,去继承JsonSerializer<>类.
public static class BigDecimalKeepTo2 extends JsonSerializer<BigDecimal> {
@Override
public void serialize(BigDecimal value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (Objects.isNull(value)) {
jsonGenerator.writeNull();
} else {
jsonGenerator.writeString(value.setScale(2, RoundingMode.HALF_UP).toPlainString());
}
}
}
2.在需要转换VO中的对应参数加上注解
/**
* 固定点值
*/
@JsonSerialize(using = BigDecimalKeepTo2.class)
@ApiModelProperty(value = "固定点值", required = true)
private BigDecimal fixedPoint;
/**
* 点值
*/
@JsonSerialize(using = BigDecimalKeepTo2.class)
@ApiModelProperty(value = "点值", required = true)
private BigDecimal pointValue;
很多类型都可以互转,这里只展示BigDecimal转指定格式的String。