JSON 유효성 검사기
JSON 문법을 검사하고 오류가 있으면 정확한 위치와 원인을 알려줍니다.
JSON 유효성 검사기 안내
JSON 유효성 검사란?
JSON(JavaScript Object Notation) 유효성 검사는 JSON 데이터의 문법이 표준 규격에 맞는지 확인하는 과정입니다. JSON은 웹 API 통신, 설정 파일, 데이터 저장 등에서 가장 널리 사용되는 데이터 교환 형식입니다. 아무리 작은 문법 오류라도 파싱에 실패할 수 있어서, 개발 과정에서 JSON 유효성을 미리 확인하는 것이 중요합니다. 이 도구는 입력된 JSON의 문법을 검사하고, 오류가 있으면 정확한 위치와 원인을 알려줍니다.
주요 기능
- JSON 문법 유효성 실시간 검사
- 오류 위치(줄, 열)와 원인을 정확히 표시
- 유효한 JSON일 경우 구조 통계(깊이, 키 수, 배열 수, 객체 수) 제공
- 포맷팅(보기 좋게 정리)과 압축(최소화) 기능
- 결과 복사 및 파일 다운로드
- 파일 드래그 앤 드롭 입력 지원
사용 방법
- 입력 영역에 JSON 데이터를 붙여넣거나 직접 입력합니다.
- '검사' 버튼을 클릭하면 유효성 결과가 표시됩니다.
- 유효한 JSON이면 구조 통계와 함께 성공 메시지가 나타납니다.
- 오류가 있으면 문제의 위치(줄, 열)와 설명이 표시됩니다.
- '포맷' 버튼으로 정리된 형태로, '압축' 버튼으로 최소 크기로 변환할 수 있습니다.
- '복사' 또는 '다운로드'로 결과를 저장합니다.
활용 사례
- API 요청/응답 데이터를 보내기 전에 문법 오류 사전 확인
- 설정 파일(package.json, .eslintrc 등) 수정 후 유효성 검증
- 다른 시스템에서 받은 JSON 데이터의 정합성 확인
- 데이터베이스에 저장할 JSON 값의 형식 검사
- 학습 목적으로 JSON 문법 규칙 이해 및 연습
팁과 주의사항
- JSON의 키와 문자열 값은 반드시 큰따옴표("")를 사용해야 합니다. 작은따옴표(')는 허용되지 않습니다.
- 마지막 항목 뒤에 쉼표(후행 쉼표)를 넣으면 오류가 발생합니다. JavaScript와 달리 JSON은 후행 쉼표를 허용하지 않습니다.
- JSON은 주석(// 또는 /* */)을 지원하지 않습니다. 주석이 필요하면 별도의 키로 설명을 넣거나 JSONC 형식을 사용하세요.
- JSON에서 허용되는 데이터 타입은 문자열, 숫자, 불리언(true/false), null, 객체, 배열 6가지입니다. undefined나 함수는 사용할 수 없습니다.
- 오류 메시지의 줄 번호와 열 번호를 참고하면 문제를 빠르게 찾을 수 있습니다.
자주 묻는 질문
Q: 가장 흔한 JSON 오류는 무엇인가요?
후행 쉼표(마지막 항목 뒤 쉼표), 작은따옴표 사용, 따옴표 없는 키, 주석 포함이 가장 흔합니다. 이 4가지만 주의해도 대부분의 JSON 오류를 피할 수 있습니다.
Q: JSON과 JavaScript 객체 리터럴의 차이점은?
JSON은 JavaScript 객체보다 엄격합니다. JSON에서는 키와 문자열에 반드시 큰따옴표가 필요하고, 후행 쉼표, 주석, 함수, undefined가 허용되지 않습니다. JavaScript에서는 이들이 모두 가능합니다.
Q: 유효성 검사와 스키마 검사는 같은 건가요?
아닙니다. 이 도구의 유효성 검사는 JSON 문법이 올바른지 확인합니다. 스키마 검사는 데이터 구조(필드 존재 여부, 타입, 값 범위 등)가 정의된 규칙에 맞는지 확인하는 별도의 과정입니다.
Q: 빈 객체 {} 나 빈 배열 []도 유효한 JSON인가요?
네, 둘 다 완전히 유효한 JSON입니다. JSON의 최상위 값은 객체나 배열이 될 수 있으며, 비어 있어도 문법적으로 문제없습니다.
Q: JSON에서 주석을 사용할 수 있나요?
표준 JSON은 주석을 지원하지 않습니다. 주석이 포함된 데이터는 파싱 오류가 발생합니다. 주석이 필요하면 JSONC 형식을 사용하거나, "_comment" 같은 별도 키에 설명을 넣는 방법이 있습니다.
Q: null, undefined, NaN의 차이는?
JSON에서 null은 유효한 값이지만, undefined와 NaN은 JSON 표준에 포함되지 않아 사용할 수 없습니다. JavaScript에서 JSON.stringify()를 사용하면 undefined 값은 자동으로 제외됩니다.
Q: 중복 키가 있으면 어떻게 되나요?
JSON 표준에서는 중복 키를 명시적으로 금지하지 않지만, 대부분의 파서는 마지막으로 나타난 값을 사용합니다. 예측하기 어려운 동작을 유발할 수 있으므로 중복 키는 피하는 것이 좋습니다.
Q: JSON에서 숫자 형식에 제한이 있나요?
JSON은 정수와 소수를 지원하지만, 0x로 시작하는 16진수, 선행 0이 있는 숫자(예: 07), Infinity, NaN은 허용되지 않습니다. 매우 큰 숫자는 정밀도 손실이 발생할 수 있습니다.
Q: 구조 통계의 '깊이'는 무엇을 의미하나요?
JSON 데이터에서 가장 깊이 중첩된 수준을 나타냅니다. 예를 들어 {"a": {"b": {"c": 1}}}의 깊이는 3입니다. 깊이가 클수록 데이터 구조가 복잡하다는 것을 의미합니다.
Q: 입력한 데이터는 서버로 전송되나요?
아닙니다. 모든 검사와 처리는 브라우저에서 JavaScript로 수행됩니다. 입력한 데이터가 외부로 전송되지 않으므로 민감한 정보가 포함된 JSON도 안전하게 검사할 수 있습니다.