-
[Spring] Primitive boolean Type is Remove Jackson 직렬화 문제 해결하기Server/Spring 2021. 11. 7. 17:25728x90반응형
Primitive boolean Type에서 isXX에서 is가 사라지는 Jackson 직렬화 문제 해결하기
이번 글에서는
Spring Boot
에서DTO를 클라이언트에 JSON 으로 Response 할 때 isXXX 네이밍에서 is가 사라지는 문제
를 해결하는 아주 간단한 과정을 공유해보려 합니다.프로젝트를 진행하면서 위와 같은 DTO를 클라이언트에게 반환하고 있었습니다. 보면
Primitive Type boolean
의isFailedGroupQuiz
라는 필드가 존재하는 것도 볼 수 있습니다. 그래서 이제 해당 DTO가 사용되는 API를Postman
으로 호출해보겠습니다.
응답 값을 보면 DTO에 분명
isFailedGroupQuiz
라고 적었지만,FailedGroupQuiz
라고 오는 것을 볼 수 있습니다. 왜 그렇지..? 라고 생각하고Jackson is remove
식으로 찾아보니 StackOverflow 글을 하나 발견 했습니다. 여기에 보면@JsonProperty
를 사용해서 이름을 지정하라고 나오는데요.
그래서 위와 같이
JsonProperty
를 사용해서 이름을 지정하고 위에서 실행했던 것과 똑같이 실행해보았습니다.
결과는 위에서 했던 거랑 달라진 것이 없었습니다. 왜 그런가 좀 찾아보니
Spring에서 사용하는 Jackson에서 직렬화를 해줄 때 is를 제거하여 직렬화를 한다
라고 하는데요.Kotlin-Jackson-Module
에서도 같은 이슈 가 존재한다고 합니다.
Jackson 직렬화 문제 해결하기
결론적으로 제가 해결한 방법은 아주 단순합니다.
isFailedGroupQuiz
컬럼의 타입을Primitive Type
이 아니라Reference Type
을 사용하자 입니다.
이번에는
DTO
에 적었던isFailedGroupQuiz
이름 그대로 응답이 오는 것을 볼 수 있습니다. 생각보다 단순했지만? 이렇게 해결한 경험을 공유하고자 글을 작성해보았습니다!반응형'Server > Spring' 카테고리의 다른 글
[Spring] Test에서 public이 아닌 필드 Reflection 으로 값 넣어주는 법 (0) 2021.11.26 [Spring] 프로젝트에서 MyBatis ResultMap을 사용하게된 이유 (2) 2021.11.18 [Spring] Swagger 404 Not Found 해결 방법 (0) 2021.10.23 [Spring] AOP(Aspect Oriented Programming)란 무엇일까? (2) 2021.09.27 [Spring] Kotlin으로 ModelMapper 사용하는 방법 (2) 2021.08.25