직렬화
자바 객체를 전송 가능한 상태로
직렬화 어노테이션들
@JsonAnyGetter
map 필드를 다룰 때 편리
map 필드가 한 번 감싸져서 나옴
public class Member {
public String name;
private Map<String, String> properties;
@JsonAnyGetter
public Map<String, String> getProperties() {
return properties;
}
}
@JsonGetter
@JsonProperty 어노테이션의 대안
메소드의 이름을 getter 메소드로 표현
public class Member {
public int studentCode;
private String name;
@JsonGetter("name")
public String getTheName() {
return name;
}
}
@JsonPropertyOrder
직렬화 하는 속성의 순서를 정함
@JsonPropertyOrder({ "name", "studentCode" })
public class Member {
public int studentCode;
public String name;
}
@JsonRawValue
Jackson이 속성을 그대로 직렬화
public class Member {
public String name;
@JsonRawValue
public String deep;
}
output 예시
//적용 후
{
"name":"My bean",
"deep":{
"attr":false
}
}
//적용 전
{
"name": "yun",
"deep": "{\n \"attr\":false\n}"
}
@JsonValue
@JsonValue 해당 멤버 필드 이름을 통해 직렬화
public enum Member {
TYPE1(1, "Type A"), TYPE2(2, "Type 2");
private Integer studentCode;
private String name;
@JsonValue
public String getName() {
return name;
}
}
@JsonRootName
root wrapper의 이름을 설정할 수 있음
@JsonRootName(value = "user")
public class Member {
public int studentCode;
public String name;
}
아웃풋 예시
{
"user":{
"studentCode":1,
"name":"John"
}
}
참고 사이트
https://www.baeldung.com/jackson-annotations
https://pjh3749.tistory.com/281
https://cheese10yun.github.io/jackson-annotation/
'Spring > 개인 공부' 카테고리의 다른 글
[Spring] @Scheduled 어노테이션을 활용한 스케줄링 (0) | 2022.05.08 |
---|---|
[FCM] Firebase Cloud Messaging이란? aka 푸시 알림, 앱 알림 (0) | 2022.05.07 |
[Data JPA] 페이징 처리 aka pagination, sorting, pageable (0) | 2022.03.31 |
[EC2 프리티어] RAM 부족할 때 swap memory로 메모리 늘려서 해결하기 (0) | 2022.02.11 |
[EC2/무중단 서비스] 스프링 부트 프로젝트 빌드하고 무중단 서비스 실행, 종료하기 (0) | 2022.02.10 |