본문 바로가기

생존형 개발

자바 DateTime 역직렬화 실패!

외부 API 연동해서 데이터를 들고오는 과정에서, JSON 응답값을 Dto로 쌈싸서

로직을 타고 데이터가 저장되야 했다.

응답 JSON 필드 중 DateTime필드가 있어서 해당필드에 @JsonFormat(shape = JsonFormat.Shape.STRING)어노테이션, @DateTimeFormat 어노테이션을 사용해 쌈을 싸려고 했다.

하지만.. 호락호락하지 않은 DateTime.. 바로 발생하는 에러

Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling...

문제의 코드 부분

이것저것 시도해보다가...

Java8에서 추가된 LocalDateTime 항목을 제대로 직렬화 또는 역직렬화를 못하는 현상이라는 것을 발견했다.

Spring Boot 2.0부터 기본으로 포함된 jackson-datatype-jsr310를 사용해야 한다고 한다..

아래처럼 registerModule(JavaTimeModule())를 사용해주면 끗

objectMapper.registerModule(JavaTimeModule()).readValue(responseBody, 뭐식깽Dto::class.java)