Spring & Spring Boot

[SpringBoot] LocalDateTime 받기(클라이언트Json→서버)

김먼저 2023. 1. 18. 12:24

 

Postman - Json 작성

 

{
    "sendDate" : "2023-01-18T11:22:33"
}

 

 

받을 DTO의 변수에 다음과 같이 셋팅하기

public class TransferInfoDto {
        //@JsonDeserialize(using = LocalDateDeserializer.class)
        //@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'hh:mm:ss", timezone = "Asia/Seoul")
        @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
        private LocalDateTime sendDate;
    }

 

(...주석은 많은 방법을 시도한 흔적...무시하세요!)

 

 

@DateTimeFormat : Spring에서 지원하는 어노테이션으로 'LocalDate'와 'LocalDateTime'과 같은

 

날짜 관련 타입의 직렬화를 지원하는 어노테이션입니다.

 

pattern 중간에 'T'를 넣는 이유는

 

띄어쓰기를 사용하면 값이 안넘어가거나 잘못넘어갈수도 있기 때문입니다.

 

pattern에서 T를 그대로 사용할 수 없어 ' '로 감싸서 표현합니다.

 

 

 

성공!!

 

(Post로 보내는 Request Body(json객체))

 

 

 

 

 

Response(서버→클라이언트) : @JsonFormat 사용.

Request(클라이언트→서버) : @DateTimeFormat 사용.

 

 

Post - Request Body 요청시  @DateTimeFormat과 @JsonFormat 둘다 사용이 가능하다고 하는데

 

저는 @DateTimeFormat만 되네요..

 

 

 

 

끝!!