Сетеры и гетеры для Jackson де\сериализации

121
29 декабря 2020, 18:40

Для десериализации и сериализации использую библиотеку Jackson. Иногда на практике встречаюсь с требованием прописать сеттеры для класса сущности, т.к. десериализация не хочет работать. От модификатора доступа это не зависит. Зачем Jackson иногда это требует если он использует рефлексию?

class Example {
 private String field;
}

...

String json = "{\"field\": \"test\"}";   
ObjectMapper mapper = new ObjectMapper();
Example example = mapper.readValue(json, Example.class);
Answer 1

Да по умолчанию Jackson использует геттеры и сеттеры для сериализации и десериализации, однако как он только не конфигурируется.

Если Вы инициализируете ObjectMapper вот так, то он будет использовать поля:

ObjectMapper mapper  = new ObjectMapper();
mapper.setVisibilityChecker(mapper.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
READ ALSO
Сервер томкат не хочет обрабатывать jsp

Сервер томкат не хочет обрабатывать jsp

There's a problem: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') (line 1, column 2)

100
Не могу найти минимальный элемент в коллекции

Не могу найти минимальный элемент в коллекции

Ребят, почему ошибка? Что ему не нравится?

141
Почему метод не возвращает true, false? [закрыт]

Почему метод не возвращает true, false? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

104
Ant checkstyle не работает в терминале

Ant checkstyle не работает в терминале

когда я запустила в eclipse все работало, однако в терминале все фейлится

107