덕개

[Json/Java Serializer] 이슈해결 - No serializer found for class...

Always2024 2022. 7. 4. 23:20

 


1. 어떤 에러인가.

 

Spring Boot 를 처음부터 다시 설정하는데 DB에서 select 하는 도중 해당 이슈가 터졌다.

보기만 해도 어질하네

에러 로그를 보면 수상해 보이는것이 하나 있다. "Serializer".

VO , DTO 객체가 Serializer를 상속받고 있을때가 있는데, 데이터를 json형태로 변환하기 위해 직렬화하는것이다.

 

해당 이슈는 직렬화 하는 과정에서 접근 제한자가 public 이거나 getter/setter를 이용하기 때문에 인스턴스 필드를 private으로 선언하면 json으로 변환하는 과정에서 에러가 발생한다고 한다.

 


2. 이슈해결

 

롬복을 사용하는 경우 @Getter가 있지 않아서 JSON으로 파싱이 불가해서 안된다는 글도 있었는데, @Data 를 사용하고있었기 때문에 이건 아니라고 생각되어 내가 해결한 방법은 2가지가 있었다.

 

<첫번째 해결방법>

각 필드에 @JsonProperty 를 붙여서 해결했다.

그럼 전부 이거 갖다 붙여야 하나...?

 

잘 해결되었다.

※주의할 점은 json으로 변환을 원치 않는 필드는 @JsonIgnor를 선언해 주어야 한다.

 

 

<두번째 해결방법>

private따위 상관없이 ObjectMapper가 모든 필드를 감지할 수 있도록 세팅해주어야 한다.

 

 

참조

https://steady-hello.tistory.com/90

 

[jackson, issue] 이슈 해결 - No serializer found for class

어떤 이슈? 급하게 테스트해볼 이슈가 있어서 간단하게 객체를 만들고 이 객체를 json string으로 변환해야 할 일이 있었습니다. 그래서 테스트용 class를 생성하고 이를 ObjectMapper의 writeValueAsString()

steady-hello.tistory.com

https://dumdildor.tistory.com/13

 

[Jackson] JSON Serialization Error

개발시 발생한 문제를 개인적으로 다시 반복하지 않기 위해 정리함. <개요> 매번 HTTP 요청을 통해 받는 JSON String 을 Jackson 의 ObjectMapper 를 통해 Map 의 Key-Value 형태로 변환하여 사용하였다. 그러다

dumdildor.tistory.com