본문 바로가기
오류

Caused by: java.lang.IllegalArgumentException: Unrecognized field "PER_NAME" (class com.example.devjob.vo.LoginPersonalVo), not marked as ignorable (4 known properties: "perId", "perEmail", "perPwd", "perName"])

by 신방동불주먹 2023. 7. 20.

원인

json 데이터를 받아와서 dto 객체로 맵핑할때 dto 클래스에 선언되지 않은 속성이 json에 있으면 오류가 발생.

 

 

 

해결 방법

 

1.DTO Class에서 어노테이션 사용

 

@JsonIgnoreProperties(ignoreUnknown =true)  :  선언 필드 외에 모든 요소 제외

dto class 객체에 속성이 없으면 exception 발생하지않고 진행.

아래와 같이 사용.

@JsonIgnoreProperties(ignoreUnknown=true)
public class CouconApiResponseDTO { 
   private String vv;
   private String name;
}

 

2.DTO Class에서 어노테이션 사용

jsonIgnoreProperties({"제외하고자하는 특정 필드 NAME"})

jsonIgnoreProperties({"ex1"})
public class CouconApiResponseDTO { 
   private String vv;
   private String name;
}

 

 

3.ObjectMapper 사용시 옵션 설정 

new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);

더보기

 

 ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);