JSON 유효성 검사 방법
- JSON을 붙여넣거나 파일을 엽니다. 입력하는 동안 자동으로 검증이 실행됩니다.
- 통계와 함께 초록색 “유효한 JSON” 메시지가 표시되면 문서가 올바른 것입니다. 그렇지 않으면 오류 메시지를 확인하세요. 줄, 열, 그리고 그 위치에 무엇이 와야 하는지 알려 줍니다.
- 강조된 줄을 고치거나 복구를 클릭한 뒤, 포맷으로 결과를 읽기 쉽게 정리합니다.
자주 발생하는 JSON 오류와 해결 방법
| 오류 | 예시 | 해결 방법 |
|---|---|---|
| 후행 쉼표 | [1, 2, ] | ] 또는 } 앞의 쉼표 삭제 |
| 작은따옴표 | {'name': 'Ada'} | 큰따옴표 사용: {"name": "Ada"} |
| 따옴표 없는 키 | {name: "Ada"} | 키를 따옴표로 감싸기: {"name": "Ada"} |
| 누락된 쉼표 | {"a": 1 "b": 2} | 속성 사이에 쉼표 추가 |
| 주석 | // settings | JSON에는 주석이 없으므로 삭제 |
| 문자열 안의 줄바꿈 | "line 1⏎line 2" | 실제 줄바꿈 대신 \n 사용 |
| 잘못된 값 | undefined, NaN, True | null, 숫자, true 또는 false 사용 |
| 앞자리 0 | {"zip": 01234} | 1234로 쓰거나 텍스트로 유지: "01234" |
| 누락된 괄호 | {"a": [1, 2} | 모든 [는 ]로, 모든 {는 }로 닫기 |
유효한 JSON의 조건
JSON은 RFC 8259에 정의되어 있습니다. 유효한 문서는 몇 가지 엄격한 규칙을 따릅니다.
- 최상위 값은 정확히 하나이며, 보통 객체
{}또는 배열[]입니다. - 객체 멤버는 쉼표로 구분된
"key": value쌍이며, 키는 항상 큰따옴표로 감싼 문자열입니다. - 문자열은 큰따옴표를 사용하며, 그 안에서는
\" \\ \/ \b \f \n \r \t와\uXXXX이스케이프만 허용됩니다. - 숫자는 10진수입니다. 앞자리 0,
+기호, 16진수,NaN,Infinity는 허용되지 않습니다. true,false,null은 소문자로 씁니다.- 토큰 사이에는 공백, 탭, 줄바꿈을 넣을 수 있지만 주석은 넣을 수 없습니다.
명령줄에서 JSON 검증하기
- Python:
python -m json.tool file.json명령은 첫 번째 오류의 줄과 열을 출력합니다. - jq:
jq empty file.json명령은 파일이 유효하지 않으면 오류 메시지와 함께 종료됩니다. - Node.js:
node -e "JSON.parse(require('fs').readFileSync('file.json', 'utf8'))"
자주 묻는 질문
JSON 검증기와 JSON 린터는 어떻게 다른가요?
검증기는 텍스트가 JSON 문법을 따르는지 확인합니다. 린터는 보통 일관된 스타일까지 강제합니다. 이 JSON 검사기는 RFC 8259 기준으로 엄격하게 검증하며, ‘포맷’ 기능으로 일관된 들여쓰기도 적용할 수 있습니다.
JSON 스키마로도 검증할 수 있나요?
이 페이지는 문법을 검사합니다. 데이터의 예상 구조를 정의하려면 JSON 스키마 생성기로 예시 문서에서 스키마를 만드세요.
여기서는 유효한 JSON이 다른 프로그램에서는 거부되는 이유는 무엇인가요?
프로그램은 특정 구조(특정 키나 타입), BOM 없는 UTF-8 같은 특정 인코딩, 또는 제한된 범위의 숫자를 요구하는 경우가 많습니다. 문법적으로 유효한 JSON이라도 이런 애플리케이션 규칙에는 어긋날 수 있습니다.
주석이 있는 JSON(JSONC)도 유효한가요?
아니요. 표준 JSON은 주석을 허용하지 않습니다. 일부 편집기는 설정 파일(JSONC)에서 주석을 허용하지만, API와 JSON.parse는 허용하지 않습니다. ‘복구’ 기능이 주석을 자동으로 제거해 줍니다.