Dto에 isRead boolean을 보냈고 클라이언트에서도 isRead를 확인하고 렌더링 시켰는데 뜻대로 되지 않았다.
확인해본 결과 서 이상한 점을 발견했다. 클라이언트로 전송된 JSON 응답에서 isRead가 아닌 read로 나타났다.
조사를 해보니, Spring Boot에서 기본적으로 사용하는 JSON 직렬화 라이브러리인 Jackson의 동작 방식 때문이었다. Jackson은 boolean 타입 필드를 처리할 때:
필드 이름이 is로 시작하면, 이를 속성 이름에서 제거한다.
예: isRead → read, isActive → active.
getter 메서드가 isRead()라면, JSON 키는 read로 변환된다.
이는 Java의 boolean 필드 네이밍 관례(isXxx)와 JSON의 간결한 키 이름 사이의 타협에서 비롯된 기본 설정이다.
Jackson에게 isRead를 그대로 유지하라고 명시적으로 지시하는 방법이다.