728x90
클라이언트로부터 예약시간을 받을 ReserveDTO를 만들었다.
package com.soni.reservation.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ReserveDto {
private String storeName;
private LocalDateTime reservedAt;
}
이러고 PostMan을 활용해 받으려고 하니 오류가 났다.
[nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: raw timestamp (2023) not allowed for `java.time.LocalDateTime`: need additional information such as an offset or time-zone (see class Javadocs);
구글링을 해보니까 @JsonFormat을 사용하면 된다는 사실을 알았다.
@DateTimeFormat은 안되고 @JsonFormat은 되는 이유 ?
Jackson : Json Data 파싱을 돕는 라이브러리
컨트롤러가 데이터를 받을 때 @RequestBody를 통해 json형태로 받는다.
클라이언트로부터 JSON 문자열을 받으면 스프링부트는 이것을 HttpMessageConverter에 넘겨서
json -> 객체 형태로 변환 (역직렬화)한다. 이 과정에서 jackson 라이브러리가 사용된다.
@DateTimeFormat은 Spring framework에 종속되어있다. 스프링부트에서는 파싱을 하기 위해 Jsckson 라이브러리를 알아야하는데 Jackson은 Spring을 알지 못 한다. 그래서 오류가 나는 것 !
날짜타입의 데이터를 클라이언트 -> 서버로 받을 때 String으로 받아서 따로 변환하지 않아줘도 되고 어노테이션을 이용하면 바로 가능함.
package com.soni.reservation.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ReserveDto {
private String storeName;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss a", timezone = "Asia/Seoul")
private LocalDateTime reservedAt;
}
------
참조
728x90
'공부 > Trouble Shooting' 카테고리의 다른 글
MariaDB - Incorrect String Value 오류 해결 (한글 인코딩 문제) (0) | 2024.08.07 |
---|---|
GithubActions CI/CD 서브 모듈 설정을 배포 서버에서 읽지 못 하는 문제 해결 (0) | 2024.06.29 |
UserDetailService 2개 구현 시 발생하는 에러 처리 (1) | 2023.10.25 |
빈 순환참조 문제 The dependencies of some of the beans in the application context form a cycle: (0) | 2023.10.21 |
Kafka 오류 - 미해결 (1) | 2023.10.17 |