에러 혼내주기/Spring

[Spring] @ResponseBody사용시 DTO에서 is라는 글자가 사라지는 에러 해결 방법

TutleKing 2023. 1. 6. 15:56

RestController에서 @ResponseBody로 DTO에 바로 맵핑시킬때 json의 body에서 boolean 타입의 is~~~ 에서 is가 사라짐으로 인해서 계속 테스트가 실패하였다.

Dtod에서 선언한 boolean 타입의 isShown

위의 사진과 같이 Dto가 HttpMessageConverter를 통해 변환될 경우 이름이 그대로 나오길 바랬지만 is가 생략이 되어 나왔다

isShown은 없고 shown만 존재

 

일반적인 해결방법으로는 @JsonProperty("{json에서 보였으면 하는 이름}") 을 사용하여 해결하는 방법이 있는데 

@JsonProperty로 json body내 이름을 수정하고자 했다.
엥..? 두개가 생겨버렸다.

위 사진과 같이 shown은 그냥 존재하고 내가 설정한 이름은 또 따로 추가가 되었다.

 

그리하여 최종적으로 해결방법을 찾은 것은 Wrapper 타입의 boolean을 사용하는 것이다.

Wrapper 타입으로 변경
해결...

 

JsonMessageConverter가 어떠한 연유인지는 모르겠지만 is라는 이름을 제하고 자동으로 이름을 변경하는 것을 알아버렸다.

나중에 시간이 나면 why까지 알아보는걸로...

반응형