Spring+JAVA

[JAVA]@jsonignoreproperties(ignoreunknown = true)

ziziDev 2024. 11. 20. 10:13
반응형

 

회사에서 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)는 필수적이지는 않지만, 데이터 안정성과 유연성 간의 균형을 맞추는 데 중요한 도구입니다. 이를 사용할지 여부는 프로젝트의 데이터 구조 관리 전략에 따라 결정해야 합니다.

 

반응형