트러블 슈팅 : Jackson 라이브러리와 LocalDateTime 타입 처리 문제 해결

song yuheon·2023년 10월 29일
0

Trouble Shooting

목록 보기
47/57
post-thumbnail

문제 상황


Java의 LocalDateTime 타입을 사용하여 개발을 진행하는 과정에서, JSON 변환을 담당하는 Jackson 라이브러리가 LocalDateTime 타입을 올바르게 처리하지 못하는 문제가 발생하였습니다.
구체적으로는 BookApplyDonationRequestDto 클래스의 applyDate 필드를 JSON 문자열로 변환하려고 했을 때, 아래 이미지와 같은 에러 메시지가 발생했습니다.

에러 메시지


원인 분석


이 문제는 Java 8에서 도입된 새로운 날짜 및 시간 API인 LocalDateTime과 같은 타입들을 Jackson 라이브러리가 기본적으로 지원하지 않기 때문에 발생합니다.
따라서 이러한 타입들을 JSON으로 변환하기 위해서는 추가적인 모듈을 포함시켜줘야 합니다.


해결 방안


com.fasterxml.jackson.datatype:jackson-datatype-jsr310 모듈을 프로젝트에 추가하여 LocalDateTime과 같은 Java 8 날짜 및 시간 타입을 Jackson이 처리할 수 있도록 합니다.

그리고 ObjectMapper 객체를 생성한 후, JavaTimeModule을 등록하여 LocalDateTime 타입의 데이터를 올바르게 처리할 수 있도록 설정합니다. 아래는 이를 적용한 코드 예시입니다.

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());

코드 적용 후


정리


Java 8의 날짜 및 시간 API를 사용할 때, Jackson 라이브러리와의 호환 문제가 발생할 수 있습니다.
이 문제를 해결하기 위해서는 jackson-datatype-jsr310 모듈을 추가하고, JavaTimeModuleObjectMapper에 등록해주어야 합니다.
이렇게 함으로써 LocalDateTime과 같은 Java 8 날짜 및 시간 타입도 원활하게 JSON으로 변환할 수 있게 되어, 개발 과정에서 발생할 수 있는 문제를 해결할 수 있을거로 추정됩니다.


profile
backend_Devloper

0개의 댓글