如何在Jackson中以特定格式显示小数(对于JSON)

时间:2018-11-13 15:50:07

标签: json spring jackson

假设我有一个对象

private Double test;

// Need specific output in JSON via Jackson: test = 24.6000

当通过杰克逊(Jackson)输出到JSON时,我得到24.6,但是我需要如示例中确切的4进制输出。杰克逊允许吗?

例如,对于日期,我们找到了一种强制MM/dd/yyyy:

的方法
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy")
       Date myDate;

我们需要类似的十进制格式。

1 个答案:

答案 0 :(得分:1)

一种实现方法是使用自定义json序列化程序并在@JsonSerialize中指定。

@JsonSerialize(using = CustomDoubleSerializer.class)
public Double getAmount()

public class CustomDoubleSerializer extends JsonSerializer<Double> {
    @Override
    public void serialize(Double value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException {
        if (null == value) {
            jgen.writeNull();
        } else {
            final String pattern = ".####";
            final DecimalFormat myFormatter = new DecimalFormat(pattern);
            final String output = myFormatter.format(value);
            jgen.writeNumber(output);
        }
    }
}