개발이야기/Java

[Java] @JsonProperty, @JsonFormat, @JsonIgnore 사용방법, 예제 (Jackson 어노테이션)

후린개발자 2024. 6. 18.
반응형

아래 소스코드는 Jackson 어노테이션(@JsonProperty, @JsonFormat, @JsonIgnore)의 예제를 보여드리기 위해 자바 객체를 JSON으로 직렬화하고, JSON을 자바 객체로 역직렬화하고 있습니다.
TestUserDto 클래스는 JSON 데이터와 자바 객체 간의 매핑을 쉽게 처리할 수 있도록 Jackson 어노테이션을 사용하고 있습니다.

 

 

Jackson 어노테이션

1. @JsonProperty
-특정 필드의 JSON 속성 이름을 명시적으로 지정하는 데 사용됩니다.


2. @JsonFormat
-날짜나 시간 형식을 지정하는 데 사용됩니다. 날짜 필드를 특정 형식으로 직렬화하거나 역직렬화할 수 있습니다.


3. @JsonIgnore
-특정 필드를 JSON 직렬화 및 역직렬화에서 무시하도록 지정합니다.

 

 

소스코드

TestUserDto 클래스

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Data
public class TestUserDto {
    @JsonProperty("firstName")
    public String firstName;

    @JsonProperty("lastName")
    public String lastName;

    @JsonProperty("dateOfBirth")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dateOfBirth;

    @JsonIgnore
    public String password;
}

 

 

TEST 클래스

import java.util.Date;
import com.common.saveSubscriptionInfo.service.TestUserDto;
import com.fasterxml.jackson.databind.ObjectMapper;

public class TEST {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();

        TestUserDto user = new TestUserDto();
        user.setFirstName("Alice");
        user.setLastName("Smith");
        user.setDateOfBirth(new Date());
        user.setPassword("superSecret");

        // JSON 직렬화
        String jsonString = mapper.writeValueAsString(user);
        System.out.println("Serialized JSON: " + jsonString);

        // JSON 역직렬화
        String inputJson = "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"dateOfBirth\":\"2024-06-11 10:20:30\"}";
        TestUserDto deserializedUser = mapper.readValue(inputJson, TestUserDto.class);
        System.out.println("Deserialized User");
        System.out.println("First Name: " + deserializedUser.getFirstName());
        System.out.println("Last Name: " + deserializedUser.getLastName());
        System.out.println("Date of Birth: " + deserializedUser.getDateOfBirth());
    }
}

 

 

1. TestUserDto 객체 생성 및 초기화

TestUserDto user = new TestUserDto();
user.setFirstName("Alice");
user.setLastName("Smith");
user.setDateOfBirth(new Date());
user.setPassword("superSecret");

 

-TestUserDto 객체를 생성하고, 필드들을 초기화합니다.

 

 

2. JSON 직렬화

String jsonString = mapper.writeValueAsString(user);
System.out.println("Serialized JSON: " + jsonString);

 

-TestUserDto 객체를 JSON 문자열로 변환(직렬화)합니다. JSON 문자열은 {"firstName":"Alice","lastName":"Smith","dateOfBirth":"2024-06-11 10:20:30"}와 같은 형식을 가집니다.

 

 

3. JSON 역직렬화

String inputJson = "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"dateOfBirth\":\"2024-06-11 10:20:30\"}";
TestUserDto deserializedUser = mapper.readValue(inputJson, TestUserDto.class);

 

-JSON 문자열을 TestUserDto 객체로 변환(역직렬화)합니다.

 


 

출력 결과

반응형

댓글

💲 추천 글