개발 공부 기록
728x90

UnrecognizedPropertyException 해결 방법

ObjectMapper 를 싱글톤으로 관리하기 위해 아래와 같이 config 클래스를 작성하였는데

갑자기 나지 않던 오류가 발생했습니다.

 

@Configuration
public class ObjectMapperConfig {

  @Bean
  public ObjectMapper objectMapper() {
    return new ObjectMapper()
        .registerModule(new JavaTimeModule());
  }
}

 

이렇게 작성하니 몇개의 API에서 아래와 같은 오류가 발생했습니다.

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "json 필드명" (class 리퀘스트 body dto 클래스 경로), not marked as ignorable (2 known properties: "실제 dto 클래스에 존재하는 필드명1", "실제 dto 클래스에 존재하는 필드명2")

 

jackson 에서 발생한 익셉션이라 ObjectMapper 설정이라 확신했습니다.

 

실제로 확인해보니 앞단에서 API에서 요청하는 json requestBody에 DTO 클래스에서 갖고 있지 않는 필드를 추가로('json 필드명')을 넣어주고 있어서 나는 오류 였습니다.

 

payload에서 해당 필드를 지워줄 수도 있었지만 백 단에서도 조치를 해야하기 때문에 ObjectMapper 설정을 다음과 같이 변경하였습니다.

 

@Configuration
public class ObjectMapperConfig {

  @Bean
  public ObjectMapper objectMapper() {
    return new ObjectMapper()
        .registerModule(new JavaTimeModule())
        .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  }
}

모르는 property에 대해서 fail 내는 설정을 false로 바꿔주었습니다. 

 

문제해결!

 

참고

https://oper0116.tistory.com/30

728x90
profile

개발 공부 기록

@찐만두

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!