개요
프로젝트에서 enum 타입을 key-value로 사용하고 있었다.
이를 원하는 Json형식으로 변경하는 과정을 담으려고 한다.
본문
프로젝트에서 지하철 라인을 enum 타입으로 관리하고 있었다.
public enum SubwayLine {
LINE_1("1호선"),
LINE_2("2호선"),
LINE_3("3호선"),
LINE_4("4호선"),
DONGHAE("동해선"),
GIMHAE_LIGHT_RAIL("부산김해경전철");
private String lineName;
지하철 라인을 담은 Dto를 아래와 같이 작성했다고 가정하자.
public class TestDto {
private Long id;
private String name;
private SubwayLine subwayLine;
Dto에 subwayLine과 같이 enum 타입을 넣어주고 Json으로 반환을 하게 된다면
key 값(LINE_1, LINE_2, LINE_3..)이 Json에 담긴다.
이때 value 값(1호선, 2호선...)을 Json으로 담으려면 @JsonValue 어노테이션을 사용하면 된다.
public enum SubwayLine {
LINE_1("1호선"),
LINE_2("2호선"),
LINE_3("3호선"),
LINE_4("4호선"),
DONGHAE("동해선"),
GIMHAE_LIGHT_RAIL("부산김해경전철");
private String lineName;
@JsonValue
public String getLineName() {
return lineName;
}
}
위 코드와 같이 Json으로 담고 싶은 것을 JsonValue 함수에서 retun을 하면 Json으로 lineName이 담기는 것을 확인할 수 있다.
@JsonValue
JsonVale 어노테이션이란 Jackson 라이브러리에서 JSON 직렬화 및 역직렬화 프로세스에서 사용된다.
이 어노테이션이 붙여진 경우 해당 메서드의 반환 값이 객체가 JSON으로 직렬화될 때 어떤 값을 사용할지를 정할 수 있다.
'스프링' 카테고리의 다른 글
잘 못 처리한 @ControllerAdvice를 수정하기 (0) | 2024.08.05 |
---|---|
스프링에서 GPT API로 이미지 전송하기 (0) | 2024.07.19 |
@Profile("local") 사용 (0) | 2024.05.09 |
request 웹 스코프와 프록시 (0) | 2023.07.26 |
프로토타입 스코프 빈과 싱글톤 빈을 함께 사용시 문제점 (0) | 2023.07.25 |