Jackson에는 직렬화 및 역 직렬화 중에 필드를 필터링하는 데 도움이되는 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