본문 바로가기

Back-end/SpringBoot

[SpringBoot] @JsonIgnoreProperties(ignoreUnknown=true)

✅ @JsonIgnoreProperties(ignoreUnknown=true)

이 어노테이션의 역할은 역직렬화(deserialization) 과정에서,
즉, JSON 데이터를 읽어 객체에 매핑해주는 과정에서 객체에 없는 알 수 없는 property가 JSON 데이터에 있어도 에러를 내뱉지 않고 무시해준다는 것이다.

 

 

🔎 예제

 

쇼핑몰의 특정 상품의 가격을 바꾸는 API를 통해 이 어노테이션을 사용하는 예를 러프하게 하나 들어보자.

 

(1) 클라이언트 측에서는 해당 API의 Request Body에 아래와 같은 JSON 형태의 데이터를 담아 서버에 요청한다.

 

{
    "price": 24000
}

 

 

(2) 서버에서는 요청 정보를 아래와 같은 PriceChangeRequest라는 객체로 받는다.

 

public class PriceChangeRequest {
    private final int price;
}

 

 

근데 만약, 클라이언트 측에서 아래처럼 서버에는 없는 key-value를 추가한다면?

 

{
    "price": 24000,
    "unknown_property": "yeahyeah"
}

 

 

이러한 케이스를 대비하는 설정이 프로젝트에 적용되어 있지 않다면 에러가 발생할 것이다.

 

이때 @JsonIgnoreProperties(ignoreUnknown= rue)을 아래처럼 PriceChangeRequest 클래스에 붙여주게 되면,

에러가 발생하지 않고 스무스하게 넘어간다.

 

@JsonIgnoreProperties(ignoreUnknown = true)
public class PriceChangeRequest {
    private final int price;
}

 

 

✏️ 공부한점

이러한 어노테이션을 쓰지않아도 문제는 되지않는다.

이미 최초 Spring Boot 환경설정에서 알 수 없는 property에 대해 에러가 발생하는 것을 disable 시켜버렸기 때문이다.

 

1. Spring Boot 최초 환경설정에서 JSON 데이터에 알 수 없는 property가 있어도 무시하는 설정이 되어 있다.

 

2. 이 설정을 임의로 변경하지 않는 이상 @JsonIgnoreProperties(ignoreUnknown = true)는 필요없다.