У меня есть объект Java, который я хочу сериализовать в JSON. Однако прежде чем сделать это, я установил некоторые свойства полей этого объекта. Теперь я хочу сериализовать этот объект в JSON. Как я могу сериализовать только те поля, которым было явно присвоено значение, и исключить все остальные поля?

Для меня добавление этих аннотаций выше класса объекта не работает: @JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY) и @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL). Причина в том, что у меня есть поля с примитивными типами данных. Добавляя одну из двух вышеуказанных аннотаций, я не препятствую сериализации полей с примитивными типами данных. Например, у меня есть несколько булевых полей, которые будут сериализованы со значением по умолчанию false. Однако я не хочу, чтобы эти поля появились в результате JSON, поскольку я не задал их значения явно до процесса сериализации. Есть какие-нибудь мысли?

Для дополнительной информации: Я использую Jackson ObjectMapper.

Kevin Wu

Ответов: 1

Ответы (1)

Начиная с версии Jackson 2.6, используйте @JsonInclude с Include.NON_DEFAULT.

Значение, которое указывает, что только свойства, имеющие значения, отличающиеся от значений по умолчанию (имеются в виду значения, которые они имеют, когда Bean построенного с помощью конструктора no-arguments), должны быть включены.

Jackson создаст отбрасываемый экземпляр вашего класса, чтобы он мог проверить, какие значения свойств отличаются от значений по умолчанию, и сериализовать только их.

2022 WebDevInsider