🏕️상황
- 학교 상세보기 페이지에 들어가면 커리큘럼을 확인할 수 있도록 하는 기능을 구현하는 과정 중이었다.
- 분명히 로컬에서 기능이 문제없이 잘 돌아가는 것을 확인을 한 후에 aws서버에 올리고, db에 데이터를 insert 하고 나서 실행을 시키니 아래와 같은 오류가 프로젝트 실행 중에 발생하였다.
- 환장할 노릇이었다. 왜 로컬에서는 잘 되는데 여기서는 이런 오류가 발생하는 것인지

Completed initialization in 3 ms 2023-09-13 04:04:53.035 WARN 325428 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?) (through reference chain: hanium.highwayspring.config.res.ResponseDTO["data"]->java.util.HashMap["null"])]
💦과정
과정 1) JSON으로 변환할 때 Map 객체를 허용하지 않는다
그래서 "내가 정의한 클래스 (dto든 entity든)에 Map으로 정의한 적이 있나?" 싶어서 살펴봤더니 그런 사실 없음...
🔜 실패
과정 2) @JsonInclude 사용하기
@JsonInclude(JsonInclude.Include.NON_NULL)
entity 클래스 위에 해당 어노테이션을 붙여서 객체를 JSON으로 변환할 때 필드의 값이 'null'인 경우 필드를 JSON 출력에서 제외하도록 하는 기능을 수행한다.
🔜 실패
🗝️해결
아~~무리 코드를 수정하고 또 수정을 해도 해결이 안 됐다.
(aws 인스턴스에서 git pull origin main만 몇 번째 한 건지 모르겠다 ㅋㅋㅋㅋㅋ)
이런 방식으로는 해결이 안 될 거 같아 오류 메시지를 꼼꼼히 파악하고 분석했다.
JSON 객체의 키(key)로 null 값이 사용되었을 때 발생하는 오류이다.
(JSON 형식에서는 key에 null 값이 들어가는 것을 허용하지 않는다.)
{
"name": null,
"age": 30
}
🔼 이런 식으로 사용할 수 없다는 것~~
그럼 결국 key와 value가 매칭이 안 된다는 것인데... 그럼 데이터의 문제일 수도 있겠다는 생각이 들었다..!!
그래서 db의 데이터를 확인해 봐야겠다는 생각이 들었다.
( 처음부터 이렇게 생각하기 힘들었던 이유는 insert문을 실행할 때 성공적으로 쿼리가 실행되는 것을 내가 확인했기 때문이다!!)
curriculum_tb 테이블에 있는 content라는 컬럼의 데이터가 엄청 길어서 aws rds 환경에서는 한눈에 테이블 형태를 확인하기 힘들다.
우리가 흔히 쓰는 로컬 환경의 DBMS처럼 확인도 안 되지, UI도 그냥 cmd 환경이지... 눈으로 일일이 확인을 할 수는 있으나 중간에 뭔가 놓칠 확률 10000%....
select *
from [테이블 명]
where [속성명] Is NULL;
그래서 다른 방법을 모색했고 기가 막힌 SQL문을 발견했다~
id 칼럼을 제외하면 총 4개의 칼럼이 있었고 하나씩 해보니 차이점이 생기는 부분을 발견했다.
🔜 원래 저렇게 핑크 박스의 내용처럼 나오는 게 정상임. null 여부를 확인했을 때 empty가 나오는 것이 정상~
🔜 저런 구문을 어떤 칼럼에 실시하니까 저렇게 데이터가 표시된다면 바로 그 부분이 문제... null이라는 거니까!
결국 null인 부분을 찾아서 데이터를 정상적으로 기입하면 오류 해결~~

'개발일지 > 2023_한이음' 카테고리의 다른 글
🤦🏻♀️고민하기 - 중복되는 코드 리팩토링 - 피드백 게시판 CRUD (1) | 2023.10.25 |
---|---|
🚨ERROR - [spring boot] java.lang.NullPointerException : null (0) | 2023.09.12 |
🚨ERROR - org.springframework.core.convert.ConverterNotFoundException (0) | 2023.09.11 |
🤦🏻♀️고민하기 - 추천 시스템 구축 (특성화고 추천 ) (0) | 2023.09.08 |
[aws] com.amazonaws.services.s3.model.AmazonS3Exception: (0) | 2023.09.03 |