반응형

회사에서 JsonIgnoreProperties를 발견.. 근데 사용하는것도 있고 아닌것도 있어서 의문을 가지게됨
@JsonIgnoreProperties(ignoreUnknown = true)에 대해 설명하자면, 이는 Jackson 라이브러리에서 제공하는 어노테이션으로, JSON 데이터를 Java 객체로 변환할 때(즉, 역직렬화할 때) Java 클래스에 정의되지 않은 필드를 무시하도록 설정하는 데 사용됩니다.
주요 특징
- JSON 데이터에 Java 객체에 정의되지 않은 필드가 포함되어 있을 경우, 예외를 발생시키는 대신 무시하고 정상적으로 변환합니다.
- REST API에서 확장 가능성을 고려해 JSON 필드가 추가될 가능성이 높은 경우에 자주 사용됩니다.
- 클래스 레벨에 선언되며, 해당 클래스에 적용됩니다.
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
private String name;
private int age;
// Getters and Setters
}
{
"name": "Alice",
"age": 25,
"address": "123 Main St",
"phone": "123-456-7890"
}
ObjectMapper objectMapper = new ObjectMapper();
String json = "{ \"name\": \"Alice\", \"age\": 25, \"address\": \"123 Main St\", \"phone\": \"123-456-7890\" }";
User user = objectMapper.readValue(json, User.class);
System.out.println(user.getName()); // Alice
System.out.println(user.getAge()); // 25
어노테이션 속성
@JsonIgnoreProperties는 단순히 ignoreUnknown 속성만 지원하는 것은 아닙니다. 다음과 같은 추가 옵션이 있습니다.
1. 특정 필드 무시
@JsonIgnoreProperties를 사용해 특정 필드를 무시할 수도 있습니다.
https://www.baeldung.com/spring-boot-customize-jackson-objectmapper
Spring Boot 최초 환경설정에서 JSON 데이터에 알 수 없는 property가 있어도 무시하는 설정이 되어 있음
이 설정을 임의로 변경하지 않는 이상 @JsonIgnoreProperties(ignoreUnknown = true)는 필요없음
결론
- 프로젝트에서 유연성을 중시하거나, 데이터 구조가 자주 변경되는 외부 API를 다룬다면 사용하는 것이 권장됩니다.
- 반대로, JSON 데이터 구조가 고정적이고, 데이터의 완전성을 검증해야 한다면 사용하지 않는 것이 더 적합합니다.
즉, @JsonIgnoreProperties(ignoreUnknown = true)는 필수적이지는 않지만, 데이터 안정성과 유연성 간의 균형을 맞추는 데 중요한 도구입니다. 이를 사용할지 여부는 프로젝트의 데이터 구조 관리 전략에 따라 결정해야 합니다.
반응형