Backend/Spring

[Spring] @JsonFormat, @DateTimeFormat 사용하기

누구세연 2024. 4. 3. 22:37

Spring에서는 JSON 데이터와 Java 객체 간의 변환 작업을 수행할 때 @JsonFormat 및 @DateTimeFormat 어노테이션을 제공합니다. 이러한 어노테이션들은 날짜 및 시간 형식을 지정하여 JSON 직렬화 및 역직렬화 과정을 조정하는데 도움을 줍니다.

이 두 어노테이션의 사용법과 기능에 대해 알아보겠습니다.

 

@JsonFormat

@JsonFormat 어노테이션은 객체를 JSON으로 변환할 때 날짜와 시간을 표현하는 방식을 지정하는 데 사용됩니다.

이를 통해 JSON으로 변환될 때의 날짜와 시간 형식을 명시적으로 설정할 수 있습니다.

import com.fasterxml.jackson.annotation.JsonFormat;

public class MyObject {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;
}

위처럼 "createdAt" 필드가 JSON으로 변환할 때 "yyyy-MM-dd HH:mm:ss"형식으로 표현되도록 지정되었습니다.

 

@DateTimeFormat

@DateTimeFormat 어노테이션은 반대로 JSON 데이터를 객체로 변환할 때 사용됩니다.

이 어노테이션은 JSON으로 받은 문자열을 Java의 Data 또는 Calendar 객체로 변환할 때 사용됩니다.

import org.springframework.format.annotation.DateTimeFormat;

public class MyDTO {
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime date;
}

위처럼 JSON 데이터로부터 "date" 필드를 변환할 때 "yyyy-MM-dd HH:mm:ss" 형식의 문자열을 LocalDateTime 객체로 변환합니다.

 

차이점

@JsonFormat과 @DateTimeFormat은 모두 날짜와 시간 형식을 지정하는 데 사용되지만 그 사용 목적과 대상이 다릅니다.

 

@JsonFormat

  • 목적: JSON 데이터를 객체로 변환할 때 날짜와 시간을 표현하는 방식을 지정
  • 대상: 객체를 JSON으로 변환할 때 날짜와 시간을 표현하는 필드에 사용

@DateTimeFormat

  • 목적: JSON 데이터를 객체로 변환할 때 특히 웹 요청에서 JSON으로 전달된 문자열을 Java의 Date 또는 Calendar 객체로 변환할 때 사용
  • 대상: 웹 요청에서 JSON으로 전달된 문자열을 Date 또는 Calendar 객체로 변환해야 하는 필드에 사용

즉, @JsonFormat 은 객체를 JSON으로 변환할 때 필요한 형식을 지정하는 데 사용되고

@DateTimeFormat은 JSON 데이터를 Java의 Date 또는 Calendar 객체로 변환할 때 필요한 형식을 지정하는 데 사용됩니다.

 

 

Spring에서는 @JsonFormat과 @DateTimeFormat 어노테이션을 사용하여 JSON 데이터와 Java 객체 간의 변환 작업을 효율적으로 수행할 수 있습니다. 이를 통해 애플리케이션의 안정성을 유지하고 데이터의 일관성을 유지할 수 있습니다.