📌 오류 내용
java.lang.IllegalArgumentException: Unrecognized field
through reference chain: Dto["num"]
Object로 된 데이터를 String으로 변환 후 JSONObject로 변환하여 Dto로 넘겨서 데이터베이스에 저장하려고 하였으나 Dto에서 nullpointerException을 만났다. Service에서 하나씩 null을 잡아서 Dto로 보낼까 하다가 아닌 것 같아서 다른 방법을 찾아보았다.
Object -> String -> JSONObject -> DTO
Object를 String으로 변환 후 objectMapper.readValue를 이용하여 Dto로 넘겼으나 넘어오는 외부API 데이터가 필요한 것보다 너무 많아서 모든 데이터를 받지 않고 필요한 데이터만 받았더니 위와 같은 에러가 나왔다.
Object -> String -> DTO
PaymentRequestDto paymentRequestDto = objectMapper.readValue(jsonStr, PaymentRequestDto.class);
Dto 클래스에 @JsonIgnoreProperties(ignoreUnknown = true)를 붙여주면 클래스에 정의된 필드만 받는다.
내가 사용한 해결 방법
@JsonIgnoreProperties(ignoreUnknown = true)
public class PaymentRequestDto {
private String name;
.
.
생략
.
.
}
선언한 필드 외에 모든 요소 제외
@JsonIgnoreProperties(ignoreUnknown = true)
public class PaymentRequestDto {
private String name;
}
특정 요소 제외
@JsonIgnoreProperties({"num"})
public class PaymentRequestDto {
private String name;
}
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);