@JsonSerialize 注解

该注解用于属性或者getter方法上,用于在序列化时嵌入开发者自定义的代码。比如将一个Date类型的变量转换成Long类型,或是序列化一个double时在其后面限制两位小数点。

如,将小数转化为科学计数法

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 BigDecimalJsonSerializer extends JsonSerializer {

    @Override
    public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if (bigDecimal != null) {
            // 处理当数值为 0.00000001类似的小数时,自动转为科学计数法的问题 .stripTrailingZeros()
            jsonGenerator.writeString(bigDecimal.stripTrailingZeros().toPlainString());
        }
    }
}

使用的时候,如下

@JsonSerialize(using = BigDecimalJsonSerializer.class)
private BigDecimal reqrate;

你可能感兴趣的:(@JsonSerialize 注解)