진짜 개발자
본문 바로가기

FrameWork/Spring Boot

SpringBoot - Controller에서 return 하는 Object의 field 이름변경 (@JsonProperty)

728x90
제목 없음

Spring Boot를 이용해서 REST API를 작성하는 도중 REST API의 문서에는 다음과 같이 return field를 원한다는 요구사항을 발견했습니다. 간단한 것이지만 이를 만족시킬 방법을 찾고 글을 남기려합니다.

 

 

다들 아시다시피 Java에서는 언더스코어가 아닌 카멜케이스를 이용하는 것이 관습입니다. 따라서 java에서 프로그래밍할 때에는 카멜케이스로 작성하되, 사용자의 요청에 따른 응답시에는 언더스코어를 이용한 키값을 가지는 데이터를 전달해줄 방법이 필요했습니다.

 

https://stackoverflow.com/questions/38635472/how-to-rename-json-objectsvariables-name-in-spring-boot

방법을 찾던 도중 위의 경로에서 제가 원하는 답변을 발견했습니다. 방법은 해당 이름 변경을 원하는 field의 getter메소드 위에@JsonProperty("rename name")을 사용하는 것이었습니다.

 

하지만, 저는 lombok을 사용하고 있었기 때문에 getter() 메소드를 코드상에서 가지고 있지 않았습니다. 때문에 @JsonProperty annotation의 target을 찾아본 결과, method 뿐만아니라 field에도 적용이 가능한 것을 찾았습니다.

 

위와 같이 field에 어노테이션을 부여한 뒤,

 

테스트를 해본결과 성공적으로 field명이 변경되어 반환된 것을 확인할 수 있었습니다.