우당탕탕 개발일지

[Java] Java 8 이후 LocalDateTime 직렬화, 역직렬화 오류 해결 본문

Java

[Java] Java 8 이후 LocalDateTime 직렬화, 역직렬화 오류 해결

kyunge_ev 2023. 1. 24. 22:33

💢 문제 발생

 LocalDateTime 타입의 값이 들어있는 객체를 테스트 코드에서 ObjectMapper 함수를 사용하여 가져올 경우 아래와 같은 에러가 발생했다.

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

 이 경우는 Java 8 부터 추가된 LocalDateTime 항목을 제대로 직렬화 or 역직렬화를 못하는 현상이다.

( ObjectMapper는 JSON 형식을 사용할 때, 응답을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다. )

 

💡 문제 해결

※ gradle / java 17

 https://mvnrepository.com/ 에서 ' jackson-datatype-jsr310 ' 검색하여 종속성 추가를 해준다.

 테스트 코드 작성 중 objectMapper 함수 사용하는 부분을 가져왔다.
아래의 코드와 같이 .registerModule(new JavaTimeModule()) 를 추가하여 사용한다.

// ...
.content(objectMapper.registerModule(new JavaTimeModule()).writeValueAsBytes(scheduleModifyRequest))
.contentType(MediaType.APPLICATION_JSON))
// ...