본문 바로가기
Programming/Languages (Java, etc)

[Kotlin, Jackson] @JsonCreator 로 enum 값 유연하게 역직렬화

by kghworks 2024. 8. 9.

 

 

 

 Spirng 개발을 하다 보면 json 직렬화에는 기본으로 jackson 라이브러리를 사용하게 된다. 다른 API 통신, FE 클라이언트와 통신할 때 제일 많이 쓰는 포맷이 json일 듯하다.

 

 Java 에는 enum 클래스를 지원해서 상수값을 편하게 관리할 수 있는데, 대외 통신 시 직렬화 작업을 할 때 그 값이 꼭 Enum에 정의한 값이 아니어도 가능해야할 때가 있다. 예를 들어 enum에는 성별을 MEN, FEMALE로 정의했지만, 호출 단에서는 M, F로 정의해서 보낸다던지 등이다. 따라서 아래처럼 직렬화를 실패하게 된다.

 

똑같은 값이 아니면 역직렬화에 실패하는 enum 테스트

 

 그러나 Jackson 라이브러리는 @JsonCreator 애노테이션을 지원한다. 아래처럼 선언해주면 역직렬화 시 enum을 유연하게 생성할 수 있다.

@JsonCreator를 적용한 enum

 

 이제 아래와 같은 테스트를 통과할 수 있다.

댓글