GUIDE - 업데이트 2026-06-25
Pretty Print 적용 오류와 JSON validate 차이
JSON pretty print 적용 오류가 나는 이유를 validate, format, minify, error detection 순서로 구분하고 실제 API 응답부터 확인하는 실무 가이드.
JSON 포맷터 & 오류 검사기 열기빠른 결론
JSON validate는 입력이 JSON 문법에 맞는지 확인하는 단계입니다. JSON format, pretty print, beautify는 이미 유효한 JSON을 사람이 읽기 좋게 들여쓰기와 줄바꿈으로 정리하는 단계입니다. JSON error detection은 한 단계 더 나아가, 파싱이 어디서 실패했는지와 원인 후보를 찾는 디버깅 흐름입니다.
순서는 단순합니다. 먼저 validate 또는 parse로 문법을 확인하고, 오류가 있으면 원본을 고친 뒤, 정상 JSON에만 pretty print나 minify를 적용합니다. 깨진 JSON은 구조를 만들 수 없기 때문에 formatter가 보기 좋게 정리하지 못합니다.
검색했다면 여기부터
| 검색어 또는 증상 | 먼저 볼 것 | 다음 행동 |
|---|---|---|
pretty print 적용 오류 | JSON 문법이 유효한지 | validator로 쉼표, 따옴표, 괄호 확인 |
Unexpected token < | HTML 응답인지 | 상태 코드와 Content-Type 확인 |
| API 응답이 한 줄이라 보기 어려움 | 문법 오류가 없는지 | 유효하면 pretty print 적용 |
| minify 후 API가 실패함 | 문자열 escape와 인코딩 | 원본 JSON과 압축본 비교 |
Pretty Print 적용 오류 체크리스트
| 확인 항목 | 왜 중요한가 | 먼저 할 일 |
|---|---|---|
첫 글자가 { 또는 [인지 | API 오류 HTML은 <로 시작하는 경우가 많습니다. | status code, redirect, Content-Type을 확인합니다. |
| 문자열과 key가 큰따옴표인지 | JSON 문자열과 object key는 큰따옴표를 써야 합니다. | 작은따옴표, 스마트 따옴표를 실제 큰따옴표로 바꿉니다. |
| trailing comma가 없는지 | JavaScript object에서는 보일 수 있지만 JSON에서는 깨집니다. | 배열/객체 마지막 항목 뒤 쉼표를 제거합니다. |
| 주석이 없는지 | JSON 문법은 주석을 포함하지 않습니다. | 주석은 문서 밖으로 빼거나 다른 설정 형식을 씁니다. |
| 응답이 잘리지 않았는지 | incomplete response는 Unexpected end of JSON input으로 이어집니다. | Network 탭, timeout, 서버 로그, 프록시 로그를 확인합니다. |
Format vs Validate vs Error Detection
| 작업 | 목적 | 결과 | 한계 |
|---|---|---|---|
| validate | JSON 문법 검사 | 유효 여부, 오류 위치 | API 계약이나 스키마까지 보장하지 않음 |
| pretty print / format | 들여쓰기와 줄바꿈 정리 | 읽기 쉬운 JSON | 깨진 JSON은 정리할 수 없음 |
| minify / compact | 공백 제거 | 한 줄 또는 작은 전송용 JSON | 오류를 찾기 어렵게 만들 수 있음 |
| parse | 문자열을 값으로 변환 | 객체, 배열, 문자열 등 | 유효하지 않으면 SyntaxError |
| error detection | 오류 위치와 원인 후보 분리 | trailing comma, 따옴표, HTML 응답 등 | 서버가 의도한 데이터를 보냈는지까지는 별도 확인 필요 |
왜 format만으로 해결되지 않는가
formatter는 보통 JSON.parse()처럼 먼저 문자열을 구조화한 뒤 JSON.stringify(value, null, space) 방식으로 들여쓰기를 만듭니다. MDN 문서 기준으로 JSON.parse()는 유효하지 않은 JSON 문자열에서 SyntaxError를 낼 수 있고, JSON.stringify()의 space 인자는 읽기 쉬운 공백을 추가하는 역할을 합니다.
즉, pretty print는 오류 수정기가 아니라 표시 방식입니다. 다음처럼 마지막 쉼표가 있으면 formatter가 들여쓰기 전에 실패합니다.
{
"name": "FixData",
"tools": ["csv", "json", "markdown",]
}
먼저 마지막 쉼표를 제거해야 합니다. 그다음에야 pretty print, minify, tree view 같은 표시 기능을 안정적으로 쓸 수 있습니다.
실무 디버깅 순서
- 브라우저 콘솔이나 Network 탭에서 실제 파싱한 원본 응답을 복사합니다.
- JSON 포맷터 & 오류 검사기에 붙여넣고 validate합니다.
- invalid라면 line, column, position 주변을 먼저 확인합니다.
- 첫 글자가
<라면 JSON 문법이 아니라 API 라우팅, 인증, 404/500 HTML 응답부터 확인합니다. - trailing comma, 작은따옴표, 닫히지 않은 괄호, escape되지 않은 줄바꿈을 순서대로 봅니다.
- valid가 된 뒤 pretty print로 구조를 펼치고, 배포나 로그용이면 minify를 적용합니다.
- 문법은 valid인데 앱이 실패하면 required field, null 허용 여부, 숫자 정밀도, 날짜 형식, root가 object인지 array인지 확인합니다.
자주 보이는 오류 패턴
| 오류 메시지/증상 | 가능성 높은 원인 | 확인 위치 |
|---|---|---|
Unexpected token < | JSON 대신 HTML 응답 | status code, 로그인 리다이렉트, 404/500 페이지 |
Unexpected end of JSON input | 빈 응답 또는 잘린 응답 | timeout, streaming 중단, 서버 로그 |
Unexpected token } 또는 ] | trailing comma 또는 값 누락 | 바로 앞 항목 |
| format 버튼을 눌러도 변화 없음 | 이미 valid가 아니거나 입력이 비어 있음 | validate 결과 |
| 한 줄 JSON이 너무 길어 보임 | minify된 정상 JSON | validate 후 pretty print |
실무 FAQ
JSON validator와 formatter는 같은 도구인가요?
역할이 다릅니다. validator는 JSON 문법을 확인하고, formatter는 유효한 JSON을 읽기 좋게 정리합니다. 실무에서는 validate, fix, format 순서로 쓰는 것이 안전합니다.
pretty print 적용 오류가 나는 이유는 무엇인가요?
대부분 formatter가 입력을 먼저 parse해야 하기 때문입니다. trailing comma, 작은따옴표, 닫히지 않은 괄호, escape되지 않은 줄바꿈, HTML 응답이 있으면 구조를 만들 수 없어 pretty print가 실패합니다.
JSON validator와 schema validator는 어떻게 다른가요?
JSON validator는 문법만 봅니다. schema validator는 유효한 JSON이 특정 필드, 타입, enum, required 조건을 만족하는지 봅니다. 문법 오류가 있으면 schema 검증 전에 먼저 JSON을 고쳐야 합니다.
JSON 대신 HTML이 나오면 formatter로 고칠 수 있나요?
아니요. 응답이 HTML이면 JSON 텍스트를 고칠 문제가 아니라 API 요청, 인증, 라우팅, 프록시, 서버 오류를 확인해야 합니다. 특히 <html>이나 <!doctype html>로 시작하면 응답 본문부터 확인하세요.
minify는 언제 쓰는 게 좋나요?
검토할 때는 pretty print가 좋고, 로그, 설정, 작은 예시, 전송량을 줄이는 용도에는 minify가 좋습니다. 다만 오류를 찾기 전에는 minify하지 마세요. 한 줄로 줄이면 위치 파악이 더 어려워집니다.
관련 도구
- JSON 포맷터 & 오류 검사기: JSON validate, pretty print, minify, 오류 위치 확인을 한 흐름에서 처리합니다.
관련 에러
- JSON Unexpected token 오류
- JSON trailing comma 오류
- JSON unexpected end of input
- Unexpected token < in JSON at position 0
- API 응답이 JSON이 아니라 HTML일 때
관련 가이드
업데이트 날짜
2026-06-25
참고한 공식 문서
아래 링크는 본문 판단 기준을 확인할 때 참고한 공식 문서입니다.
- JSON.parse()MDN Web Docs - 확인일: 2026-06-25
- JSON.stringify()MDN Web Docs - 확인일: 2026-06-25
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange FormatRFC Editor - 확인일: 2026-06-25