[java] Jackson에서 사용되는 주요 어노테이션은 어떤 것이 있나요?

Jackson은 자바 객체를 JSON으로 변환하고, JSON을 자바 객체로 변환하기 위한 라이브러리입니다. Jackson에서는 다양한 어노테이션을 사용하여 객체와 JSON 간의 매핑을 정의할 수 있습니다.

주요 Jackson 어노테이션은 다음과 같습니다:

  1. @JsonProperty: 필드 또는 메소드에 사용되며, JSON의 속성 이름과 자바 객체의 속성 이름 간의 매핑을 지정합니다.
public class MyObject {
    @JsonProperty("name")
    private String fullName;

    // getter, setter
}
  1. @JsonAutoDetect: 클래스 또는 메소드에 사용되며, 객체의 필드 및 메소드의 시리얼라이즈(직렬화) 기준을 설정합니다. 기본적으로 모든 public 메소드와 필드가 시리얼라이즈 대상입니다.
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class MyObject {
    private String name;
    private int age;

    // getter, setter
}
  1. @JsonIgnore: 필드 또는 메소드에 사용되며, 해당 속성을 JSON 변환에서 제외합니다.
public class MyObject {
    private String name;

    @JsonIgnore
    private int age;

    // getter, setter
}
  1. @JsonFormat: 날짜 및 시간 형식을 지정하는데 사용되며, 객체의 속성을 JSON으로 변환할 때 사용할 형식을 지정합니다.
public class MyObject {
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    private LocalDate birthDate;

    // getter, setter
}

이 외에도 Jackson은 다양한 어노테이션을 제공하며, 사용자 정의 어노테이션을 생성하여 매핑 규칙을 정의할 수도 있습니다. 자세한 내용은 Jackson 공식 문서를 참조하시기 바랍니다.

참고 자료: