Джексон має клас під назвою SimpleBeanPropertyFilter, який допомагає фільтрувати поля під час серіалізації та десеріалізації; не глобально. Я думаю, що саме цього ти хотів.
@JsonFilter("custom_serializer")
class User {
private String password;
//setter, getter..
}
Потім у своєму коді:
String[] fieldsToSkip = new String[] { "password" };
ObjectMapper mapper = new ObjectMapper();
final SimpleFilterProvider filter = new SimpleFilterProvider();
filter.addFilter("custom_serializer",
SimpleBeanPropertyFilter.serializeAllExcept(fieldsToSkip));
mapper.setFilters(filter);
String jsonStr = mapper.writeValueAsString(currentUser);
Це запобіжить password
серіалізацію поля. Також ви зможете десаріалізувати password
поля як є. Просто переконайтесь, що на об’єкт ObjectMapper не застосовуються фільтри.
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(yourJsonStr, User.class); // user object does have non-null password field