728x90
반응형
SMALL
JodaTime을 제외하고 Java에서 정식으로 LocalDate, LocalDateTime 이 지원되면서 여러가지로 Date, Time 을 사용하는데 편해졌다.
그런데 기존 legacy project 에서는 DateTime 의 값을 String에 담고 있으며
format은 yyyy-MM-dd HH:mm:ss 이며 이 legacy 프로젝트로 부터 값을 가져와 parsing 해야 하는 상황이 발생했다.
이런 경우 아래와 같은 오류가 발생한다.
org.springframework.core.codec.DecodingException:
JSON decoding error:
Cannot deserialize value of type `java.time.LocalDateTime` from String \"2017-02-06 15:38:23\":
Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException)
Text '2017-02-06 15:38:23' could not be parsed at index 10;
nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException....
변환할 수 없단다...
해결 방법은 간단하다. fasterxml 이 잘 알아들을 수 있도록 pom.xml 에 jsr310 dependency를 추가 해 준다.
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
그리고 DTO 의 LocalDateTime type 의 변수에 jsonFormatter를 선언해 준다.
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime expiredDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastAccessDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime pwChangeDate;
잘 된다..
그런데 data 중 0000-00-00 00:00:00 이라는 값이 있다.
LocalDateTime 에서 0000 이라는 year 값은 있을 수 없으니 당연히 에러가 발생한다.
org.springframework.core.codec.DecodingException:
JSON decoding error: Cannot deserialize value of type `java.time.LocalDateTime`
from String \"0000-00-00 00:00:00\":
Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException)
Text '0000-00-00 00:00:00' could not be parsed at index 10; ...
이건... 처리방법을 모르겠다... 그래서 legacy 쪽 데이터를 가지고 오는 API 의 Query를 변경했다.
...
IF(lock_date = '0000-00-00 00:00:00', '', DATE_FORMAT(lock_date, '%Y-%m-%d %H:%i:%s')) AS lockDate
..
잘된다...
생각하지 못한 부분 때문에 아까운 시간이 소비 되었네..ㅠㅠ
728x90
반응형
LIST
'IT > JAVA' 카테고리의 다른 글
Synchronized 잘 알고 사용하기 (0) | 2020.11.05 |
---|---|
ServletFilter 를 이용한 Download File 분석 (0) | 2020.09.29 |
Java 13 특징 (feat. Java 10 특징) (0) | 2019.12.20 |
Gson Serialize 시 예외 시키기 (@Expose) (0) | 2019.11.28 |
Rest API QueryString Parsing for MyBatis (0) | 2019.09.24 |