본문 바로가기

카테고리 없음

[Error] 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 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling

 

Jackson이 Java 8에서 추가된 java.time 패키지의 LocalDateTime과 같은 날짜 및 시간 타입을 기본적으로 지원하지 않기 때문에 발생

이 문제를 해결하려면 Jackson 모듈인 com.fasterxml.jackson.datatype:jackson-datatype-jsr310 추가 필요

이 모듈은 Java 8의 날짜 및 시간 API를 지원함

 

의존성 추가(Gradle)

implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'

 

의존성 추가(Maven)

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.14.4</version> <!-- 최신 버전으로 변경 가능 -->
</dependency>

 

 

spring.jackson 프로퍼티를 사용하여 다음과 같이 설정할 수 있음

spring.jackson.serialization.write-dates-as-timestamps=false

 

기본적으로 속성이 true로 설정되어 있는데, 이 경우 Jackson은 날짜를 타임스탬프로 표현하여 JSON으로 직렬화함

타임스탬프는 일반적으로 밀리초 단위의 숫자로 표현되며 "2023-01-01T12:00:00.000Z"와 같은 포맷

 

속성을 false로 설정하면 JSON으로 직렬화되는 날짜가 타임스탬프 대신 ISO-8601형식의 문자열로 표현 하게됨

 

ISO-8601형식 문자열

더보기
  1. 날짜: YYYY-MM-DD
    • 예시: 2024-01-22
  2. 날짜와 시간: YYYY-MM-DDThh:mm:ss
    • 예시: 2024-01-22T14:30:00
  3. 시간대 포함: YYYY-MM-DDThh:mm:ssTZD
    • 예시: 2024-01-22T14:30:00+03:00 (세계 표준시로부터 3시간 뒤)
  4. 시간대 미포함 (UTC): YYYY-MM-DDThh:mm:ssZ
    • 예시: 2024-01-22T14:30:00Z (세계 표준시)