아래 소스코드는 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 객체로 변환(역직렬화)합니다.
'개발이야기 > Java' 카테고리의 다른 글
[Java] enum(Enumeration) 사용방법, 예제, 활용방법, 장점 (0) | 2024.07.03 |
---|---|
[Java] Stream(스트림) API 사용방법, 예제 (0) | 2024.07.02 |
[Java] 로그(log) 파일 만들기 (Logger 클래스 사용) (0) | 2024.05.23 |
[Java] 문자열에서 숫자만 추출하기 (메서드, 예제코드) (0) | 2024.05.16 |
[Java] Jasypt 암호화, 복호화 사용방법, 예제코드 (0) | 2024.04.14 |
댓글