직렬화

자바 객체를 전송 가능한 상태로

 

직렬화 어노테이션들

@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/

 

+ Recent posts