В чем разница между свойством с @JsonIgnore и без аннотации?

Рассмотрим следующий класс:

private static class Widget {

    @JsonProperty
    private String id = "ID";

    @JsonIgnore
    private String jsonIgnored = "JSON_IGNORED";

    private String noAnnotation = "NO_ANNOTATION";
}

Если я сериализую это с помощью Джексона, я получу эту строку:

{"id":"ID"}

В чем разница между свойством с @JsonIgnore и без аннотации?


person mattalxndr    schedule 28.06.2016    source источник


Ответы (1)


Аннотированные свойства/методы @JsonIgnore не будут сериализованы/десериализованы Джексоном. Пока неаннотированный будет.

Проблема здесь в том, что Джексон обычно ищет геттеры, а вы не указали ни одного геттера. Вот почему он сериализует только аннотированное свойство @JsonProperty.

Если вы реализуете 3 геттера для 3 свойств, ваш json будет выглядеть так:

{
  "id":"ID",
  "noAnnotation":"NO_ANNOTATION"
}
person Renato Souza    schedule 28.06.2016
comment
Тогда в чем разница между полем без аннотаций и полем с @JsonProperty? - person Frax; 31.10.2018
comment
Если @JsonProperty отсутствует, сгенерированный вывод будет основан на имени свойства. Допустим, ваше свойство было названо textDescription, но вам оно нужно как text-description. Затем вы должны использовать @JsonProperty (текстовое описание) - person Renato Souza; 26.06.2019