본문 바로가기
백엔드/Java

JSON Enum 파싱

by 1005ptr 2020. 11. 10.
반응형

참고 : Jackson Serialize/Deserialize Enum values

https://stackoverflow.com/questions/37833557/jackson-serialize-and-deserialize-enum-values-as-integers

 

Jackson: Serialize and deserialize enum values as integers

Consider the following enum and class: public enum State { ON, OFF, UNKNOWN } public class Machine { String name; int numCores; State state; public Machine(String nam...

stackoverflow.com

목적 : JSON 파싱할 때 enum으로 받기

방법 : Enum 클래스에 아래 코드블럭 추가

        enum이 적힌 순서대로 번호가 따인다.(0, 1, 2, 3)

주의점

      - 보내는쪽에서도 숫자로 보내줘야됨

      - 보내는 쪽의 enum 순서랑 받는쪽이랑 같은 숫자가 매칭되도록 선언되어 있어야 함

    @JsonValue
    public int toValue() {
        return ordinal();
    }

ordinal은 enum 값이 선언된 순서가 사용되는거라 주고받는 쪽 enum 클래스 동기화가 잘 되어야 한다.(순서바뀌면 깨짐)

명시적으로 숫자를 지정할 수도 있다.

public enum MyEnum {

    @JsonProperty("0")
    ON,

    @JsonProperty("1")
    OFF,

    @JsonProperty("2")
    NONE
}

 

반응형

댓글