Как отобразить десятичное число в определенном формате в Джексоне (для JSON) - PullRequest
0 голосов
/ 13 ноября 2018

Предположим, у меня есть объект с

private Double test;

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

При выводе в JSON через Джексона я получаю 24.6, но мне нужен точный 4-десятичный вывод, как в примере. Джексон позволяет это?

Например, для Даты мы нашли способ форсировать MM/dd/yyyy:

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

Нам нужно нечто подобное для десятичного форматирования.

1 Ответ

0 голосов
/ 13 ноября 2018

Один из способов сделать это - использовать собственный сериализатор 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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...