[Java] 7. 어노테이션을 이용한 JSON 객체 Date 형식 변환(@JsonFormat, @DateTimeFormat)


스프링에서 어노테이션(@JsonFormat, @DateTimeFormat)을 이용한 JSON 객체 Date 형식 변환


사용 설명에 앞서 @JsonFormat, @DateTimeFormat에 대해 정확한 정보를 찾다가 아래에 포스팅을 찾아는데 설명이 잘 되어있어서 들어가서 한번 정독하고 사용하면 더 도움이 될 듯 합니다.

[참고] https://jojoldu.tistory.com/361




사용 설명

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startDate;

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endDate;

  • 서버 Get 요청 @ModelAttribute에는 @DateTimeFormat 사용
  • 서버 Post 요청 @RequestBody에는 JSON 객체를 @DateTimeFormat과 @JsonFormat 로 모두 사용
    • 2개의 어노테이션 모두가 있으면 선언 시에는 @JsonFormat이 먼저 적용
  • 서버 응답 시 ResponseBody에서는 @JsonFormat 만 적용


의존성

  • Spring Boot 2.0에서는 JSR 310이 의존성 기본적으로 되어있음 그래서 아래와 같이 따로 의존성을 추가 할 필요가 없다.
compile('com.fasterxml.jackson.datatype:jackson-datatype-jsr310')



@DateTimeFormat vs @JsonFormat

  • @JsonFormat은 Jackson의 어노테이션
  • @DateTimeFormat은 Spring의 어노테이션

Spring의 기본 JSON 컨버터는 Jackson이며, @JsonFormat은 LocalDate 혹은 LocalDateTime을 JSON으로 직렬화할때 포맷을 관리합니다.




[참고]

  • https://jojoldu.tistory.com/361