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))
// ...