Json > VO 맵핑시 대소문자 무시하기

특정 API를 통해 JSON데이터를 파싱할때, GSON, Jackson, JSON Parser등을 이용하여 맵핑을 하겠지만,
API에서 보내준 데이터의 대소문자 기준이 다를 수 있다.
양쪽 데이터의 대소문자 기준을 맞춰주는것이 가장 좋지만, 정말 불가능한 상황일때 몇가지 방법을 생각해보게 된다. Json Vo parsing ignore caption @JsonSetter 설정하기
  • 아래와 같이 Jackson 라이브러리에 포함된 @JsonSetter를 사용하면 멤버필드명이 다르더라도 인식하게 해준다.
String name;

@JsonSetter("NAME")
public void setName(String name){
  this.name = name;
}
GSON 필드 정책 (FieldNamingPolicy) 설정해주기
  • GSON 사용시에는 아래와 같이 FieldNamingPolicy 정책을 추가해준다.
    필드명에 _ 혹은 . 이 있다면 LOWER_CASE_WITH_DASHES 등 정책 설정으로 변환 가능하나, 아예 UPPERCASE로만 오는 경우는 적용이 까다로울 수 있다.
FieldNamingStrategy fieldNamingStrategy = new FieldNamingStrategy() {
    @Override
    public String translateName(Field field) {
            return field.getName().toUpperCase();
    }
};
Gson gson = new GsonBuilder().setFieldNamingStrategy(fieldNamingStrategy).create();
ApiResVo apiResVo = gson.fromJson(responseBody, ApiResVo.class);
ObjectMapper를 사용하는 방법
  • ObjectMapper ACCEPT_CASE_INSENSITIVE_PROPERTIES 설정을 통하여 대소문자에 상관없이 허용하도록 변경
ObjectMapper mapper = new ObjectMapper()
    .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true)
    .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ApiResVo apiResVo = mapper.readValue(responseBody, ApiResVo.class);

You may also like...

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.