ObjectMapper

kafka로 message consume 후 Deserialization 수행시 ObjectMapper를 사용했는데요. 가끔 헷갈리는 부분이라 기록해 봅니다.

import com.fasterxml.jackson.databind.ObjectMapper;
....
@Autowired
private ObjectMapper objectMapper;
....
try {
    TestDTO dto = objectMapper.readValue(message, TestDTO .class);
} catch (IOException e) {
    log.error("exception occured.", e);
}

3번째 경우처럼 DTO에 적당한 필드가 없게되면 exception이 발생합니다.

// 정상처리
{"a": "aaa", "b": "bbb", "b": "ccc"}
 
public class TestDTO {
    private String a; // "aaa"
    private String b; // "bbb"
    private String c; // "ccc"
}
 
// 정상처리
{"a": "aaa"}
 
public class TestDTO {
    private String a; // "aaa"
    private String b; // null
    private String c; // null
}
 
// 오류 : com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "b"
{"a": "aaa", "b": "bbb", "b": "ccc"}
 
public class TestDTO {
    private String a;
}

Notice

  • 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 크리에이티브 커먼즈 라이선스
  • 저작권과 관련된 파일요청 및 작업요청을 받지 않습니다.
  • 댓글에 대한 답변은 늦을 수도 있습니다.
  • 답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다