IT/DB

[MYSQL] AJAX JSON 파싱 오류 디버깅, 개행문자 삭제

승돌 2022. 6. 27. 19:01
반응형

문제 상황: 

AJAX 요청을 하고 JSON 응답을 기대할 때 파싱 오류.

특히 JSON 형식이 올바른 것처럼 보일 때 이러한 오류는 더욱 당혹스럽습니다.

데이터베이스 데이터에 개행 문자가 포함되어 있는 것이 흔한 원인 중 하나입니다.

제가 겪은 문제도 엑셀 파일에서 CSV로 가져온 데이터에 원치 않는 개행 문자가 포함되어 발생한 문제였습니다.

 

 

JSON 데이터는 JSON 검사기를 통해 확인했을 때 완벽해 보였는데 AJAX는 계속해서 파싱 오류를 발생시켰습니다.

이로 인해 문제가 JSON 형식 자체가 아니라 데이터베이스에서 가져온 내용에 있다는 것을 깨달았습니다.

 

문제의 진짜 원인은 데이터베이스에서 SELECT 쿼리를 실행할 때 개행 문자가 포함되어 오는 것이었습니다.

눈에 보이지 않는 이 문자들이 JSON 파서를 혼란스럽게 만들었습니다.

 

온라인에서 흔히 제시되는 해결책은 SQL UPDATE 문을 사용하여 개행 문자를 대체하는 것이었습니다:

UPDATE [테이블명] SET [칼럼명] = REPLACE([칼럼명], '\r\n', '');

 

하지만 이 방법으로는 문제가 해결되지 않았습니다.

 

실제 해결책: 

추가 실험을 거친 결과, SQL 쿼리에서 중첩된 REPLACE 함수를 사용하여 두 종류의 개행 문자(\r과 \n)를 모두 제거하는 것이 해결책이었습니다:

UPDATE [테이블명] SET [칼럼명] = REPLACE(REPLACE([칼럼명], '\n', ''), '\r', '');

 

 

개행 문자 확인 방법: 

SQLyog를 사용하는 분들에게는 텍스트 모드에서 데이터를 보는 것(인터페이스에서 빨간 버튼을 통해 접근 가능)이 개행 문자를 확인하는 유용한 방법입니다.

이 모드를 사용하면 숨겨진 개행 문자를 쉽게 발견할 수 있습니다.

 

반응형