[java] Jackson 어노테이션 기반 직렬화와 역직렬화 처리

Jackson 라이브러리는 Java 객체를 JSON으로 직렬화하거나 JSON을 Java 객체로 역직렬화하는 데 사용됩니다. Jackson은 강력한 어노테이션 기반 기능을 제공하여 직렬화 및 역직렬화 과정을 사용자화할 수 있습니다.

이 블로그 포스트에서는 Jackson 어노테이션을 사용하여 Java 클래스를 JSON으로 어떻게 직렬화하고, JSON을 다시 Java 객체로 어떻게 역직렬화하는지에 대해 살펴보겠습니다.

1. @JsonProperty 어노테이션

@JsonProperty 어노테이션은 Java 필드를 JSON 속성에 매핑하는 데 사용됩니다. 이 어노테이션을 사용하면 JSON 키 이름과 Java 필드 이름을 매핑할 수 있습니다.

public class User {
    @JsonProperty("user_id")
    private String userId;

    @JsonProperty("first_name")
    private String firstName;

    // Getters and Setters
}

위의 예제에서 @JsonProperty 어노테이션은 user_idfirst_name JSON 속성을 각각 userIdfirstName 필드에 매핑합니다.

2. @JsonFormat 어노테이션

@JsonFormat 어노테이션은 날짜 및 시간 값을 포맷하는 데 사용됩니다. 이 어노테이션을 사용하여 날짜 형식을 지정할 수 있습니다.

public class Event {
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date eventDate;

    // Getters and Setters
}

위의 예제에서 @JsonFormat 어노테이션은 eventDate 필드의 날짜 형식을 yyyy-MM-dd HH:mm:ss로 지정합니다.

3. @JsonIgnore 어노테이션

@JsonIgnore 어노테이션은 특정 필드를 JSON 직렬화 및 역직렬화에서 제외하는 데 사용됩니다.

public class Employee {
    private String empId;
    private String firstName;

    @JsonIgnore
    private String password;

    // Getters and Setters
}

위의 예제에서 @JsonIgnore 어노테이션은 password 필드를 JSON 직렬화 및 역직렬화에서 제외합니다.

위의 어노테이션들을 사용하여 Jackson을 이용한 직렬화와 역직렬화를 사용자화할 수 있습니다. 어노테이션을 적절히 활용하여 JSON과 Java 객체 간의 변환을 원하는 방향으로 조절할 수 있습니다.

참고 자료