Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpJsIg 142 of 322 menu
◀ ▶

Игнор поля в Java

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

Аннотацию @JsonIgnore ставят на компонент record, поле или геттер. При записи в строку такое свойство пропускают, при чтении ключ в тексте тоже не требуют:

import com.fasterxml.jackson.annotation.JsonIgnore; public record UserCard( String login, @JsonIgnore String secretToken ) {}

В JSON останется только login. Токен живёт в объекте после разбора, если его задали в коде, но в текст не попадает:

import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.ObjectMapper; public record UserCard( String login, @JsonIgnore String secretToken ) {} public class Main { public static void main(String[] args) throws Exception { UserCard card = new UserCard("kim", "tok-99"); ObjectMapper mapper = new ObjectMapper(); String text = mapper.writeValueAsString(card); System.out.println(text); UserCard fromText = mapper.readValue( "{\"login\":\"lee\"}", UserCard.class ); System.out.println(fromText.login()); } }

Для обычного класса с геттерами ту же аннотацию вешают на метод getSecretToken, чтобы Jackson не считал свойство частью JSON. Смысл тот же: наружу уходит только то, что помечено как данные для обмена.

Опишите record PublicNote с title и draftComment. Поле черновика не должно попадать в JSON. Запишите заметку с заголовком "idea" и комментарием "wip", выведите JSON и убедитесь, что ключа черновика в строке нет.

Дана строка JSON:

String raw = "{\"title\":\"done\"}";

Разберите эту строку как PublicNote с игнорируемым черновиком и выведите только заголовок.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить