본문 바로가기
Web Programming

Java - 문제 해결: UnrecognizedPropertyException: Unrecognized field

by 맑은안개 2022. 11. 24.

jackson에서 제공하는 Object Mapper를 사용하여, Json데이터를 DTO객체로 변환할 때 아래와 같은 오류 발생.

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "8. Bid Price" 
... 중략 ...

문제점은 Json 데이터의 Key가 변환하고자 하는 DTO객체없는 경우 발생합니다.

Json Data

{
  "1. From_Currency Code" : "USD",
  "2. From_Currency Name" : "United States Dollar",
  "3. To_Currency Code" : "KRW",
  "4. To_Currency Name" : "South Korean Won",
  "5. Exchange Rate" : "1328.17000000",
  "6. Last Refreshed" : "2022-11-24 05:32:44",
  "7. Time Zone" : "UTC",
  "8. Bid Price" : "1328.17000000",
  "9. Ask Price" : "1328.17000000"
}

Dto

@Getter
@ToString
public class CurrencyExchangeDTO {

    @JsonSetter("1. From_Currency Code")
    private String fromCurCode;
    @JsonSetter("2. From_Currency Name")
    private String fromCurName;
    @JsonSetter("3. To_Currency Code")
    private String toCurCode;
    @JsonSetter("4. To_Currency Name")
    private String toCurName;
    @JsonSetter("5. Exchange Rate")
    private String exchangeRate;
    @JsonSetter("6. Last Refreshed")
    private String lastRefreshedAt;
    @JsonSetter("7. Time Zone")
    private String tz;

}
  • 두 개의 Key가 매핑되지 않은 상태, 이를 무시하려면, @JsonIgnoreProperties을 사용합니다.

@JsonIgnoreProperties

@Getter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class CurrencyExchangeDTO {
...
}
  • ignoreUnknown = true 옵션을 주어야 합니다.
반응형