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
