JSON 포맷터 & 유효성 검사기 — 무료 온라인 도구
JSON을 즉시 포맷, 검증, 축소합니다. 구문 강조, 줄 번호가 포함된 오류 탐지, 통계 — 모두 100% 클라이언트 사이드.
// 포맷된 JSON이 여기에 표시됩니다
JSON이란?
JSON(JavaScript Object Notation)은 JavaScript의 객체 리터럴 구문에서 파생된 경량 텍스트 기반 데이터 교환 형식입니다. RFC 8259에 정의되어 있으며 키-값 쌍(객체)과 정렬된 목록(배열)으로 데이터를 표현합니다. 거의 모든 최신 프로그래밍 언어에 내장 JSON 파서가 포함되어 있어 REST API, 설정 파일, 데이터 직렬화의 지배적인 형식입니다.
JSON은 6개의 원시 타입을 지원합니다: string, number, boolean(true/false), null, object(중괄호), array(대괄호). 모든 문자열과 객체 키는 반드시 큰따옴표로 감싸야 합니다 — 작은따옴표는 유효한 JSON이 아닙니다.
일반적인 JSON 구문 오류
JSON 사양은 의도적으로 엄격하므로 작은 실수도 전체 파싱 실패를 유발합니다. 유효하지 않은 JSON의 가장 빈번한 원인은 다음과 같습니다:
- 후행 쉼표: 객체나 배열의 마지막 요소 뒤에 오는 쉼표 —
{"a": 1,}— 는 JSON에서 허용되지 않습니다. JavaScript 객체 리터럴과 많은 언어에서는 유효하지만 JSON 사양에서는 명시적으로 금지됩니다. - 작은따옴표 문자열: JSON은 모든 문자열과 키에 큰따옴표를 요구합니다.
{'key': 'value'}는 유효하지 않으며{"key": "value"}여야 합니다. - 인용되지 않은 키: 객체 키는 항상 따옴표로 감싼 문자열이어야 합니다.
{name: "Alice"}는 유효하지 않은 JavaScript 스타일 약식이며 JSON은{"name": "Alice"}를 요구합니다. - JavaScript 주석: JSON은
// 한 줄또는/* 블록 */주석을 지원하지 않습니다. 설정 파일에 주석이 필요하다면 JSONC 또는 JSON5를 고려하되 전용 파서가 필요합니다. - Undefined 값:
undefined는 JavaScript 개념이며 JSON에는 해당 표현이 없습니다.undefined값을 가진 키는JSON.stringify()에 의해 자동으로 제거됩니다. - 이스케이프되지 않은 특수 문자: 문자열 내부의 특정 문자는 이스케이프해야 합니다:
\"(큰따옴표),\\(백슬래시),\n(줄바꿈),\t(탭). 문자열 리터럴 내의 원시 줄바꿈은 허용되지 않습니다.
JavaScript의 JSON.parse와 JSON.stringify
JavaScript는 JSON을 다루기 위한 두 가지 내장 메서드를 제공합니다:
// JSON 문자열을 JavaScript 객체로 파싱 const data = JSON.parse('{"name":"Alice","age":30}'); console.log(data.name); // "Alice" // JavaScript 객체를 JSON 문자열로 변환 const json = JSON.stringify(data, null, 2); // 2칸 들여쓰기 // 항상 try/catch로 유효성 검증 try { const parsed = JSON.parse(userInput); } catch (e) { console.error('유효하지 않은 JSON:', e.message); } // Replacer 함수로 키 필터링 const filtered = JSON.stringify(data, ['name']); // '{"name":"Alice"}'
현대 소프트웨어 아키텍처에서의 JSON
JSON(JavaScript Object Notation)은 웹의 보편적인 데이터 교환 형식이 되었습니다. REST API, 구성 파일, NoSQL 데이터베이스, 메시지 큐, 그리고 많은 최신 애플리케이션의 저장 형식으로 사용됩니다. JSON을 깊이 이해하는 것은 모든 개발자에게 필수적입니다.
JSON 데이터 타입과 주의사항
- 숫자: JSON 숫자는 정수와 부동소수점의 구분이 없습니다 — 42와 42.0 모두 유효합니다. 그러나 매우 큰 정수(2^53 초과)는 JavaScript에서 정밀도를 잃습니다. Snowflake ID 같은 경우 문자열을 사용하세요.
- 문자열: 큰따옴표를 사용해야 합니다 — 작은따옴표와 백틱은 유효하지 않은 JSON입니다. \u00e9 같은 유니코드 이스케이프가 지원됩니다. 줄바꿈은 \n으로 이스케이프해야 합니다.
- null vs undefined: JSON은 null을 지원하지만 undefined는 지원하지 않습니다. JavaScript 객체를 직렬화할 때 undefined 값은 자동으로 삭제됩니다.
- 주석 불가: 표준 JSON은 주석을 허용하지 않습니다. 주석이 필요한 구성 파일에는 JSONC(JSON with Comments)나 JSON5를 사용하세요.
- 후행 쉼표 불가: {"a": 1, "b": 2,}는 유효하지 않은 JSON입니다 — 2 뒤의 후행 쉼표가 파싱 오류를 발생시킵니다.
JSON 성능 최적화
대량의 JSON 데이터를 처리하는 애플리케이션에서 다음 최적화는 성능을 크게 향상시킵니다:
- 스트리밍 파서: 전체 JSON 파일을 메모리에 로드하는 대신, 스트리밍 파서(Node.js의 JSONStream이나 Python의 ijson 등)를 사용하여 데이터를 점진적으로 처리합니다.
- 스키마 검증: JSON Schema(JavaScript의 ajv나 Python의 jsonschema 등)를 사용하여 JSON 구조를 사전에 검증하고 처리 전에 잘못된 데이터에서 빠르게 실패합니다.
- 바이너리 대안: 내부 서비스 간 통신에는 Protocol Buffers, MessagePack, CBOR 같은 바이너리 형식을 고려하세요. JSON보다 2~10배 작고 파싱도 빠릅니다.
- 압축: JSON API에서 gzip이나 Brotli 압축을 활성화하세요. JSON은 반복되는 키 이름과 구조로 인해 매우 잘 압축됩니다(일반적으로 80~90% 감소).
자주 묻는 질문
JSON이란 무엇이며 왜 사용됩니까?
JSON(JavaScript Object Notation)은 JavaScript 객체 구문에서 파생된 경량 텍스트 기반 데이터 교환 형식입니다. 키-값 쌍과 정렬된 목록을 사용하여 사람이 읽기 쉽고 기계가 파싱하기 쉽습니다. 거의 모든 프로그래밍 언어에 내장 JSON 파서가 있어 REST API, 설정 파일, 데이터 저장의 지배적인 형식입니다.
온라인에서 JSON을 어떻게 검증합니까?
위의 입력 필드에 JSON을 붙여넣고 검증 버튼을 클릭하세요. 이 도구는 JSON.parse()를 사용하여 JSON을 확인하고 유효하지 않은 경우 줄과 열 번호와 함께 정확한 구문 오류를 보고합니다. 일반적인 문제에는 후행 쉼표, 작은따옴표 문자열, 인용되지 않은 키, JavaScript 주석 등이 있으며 이 중 어느 것도 유효한 JSON이 아닙니다.
JSON과 XML의 차이점은 무엇입니까?
JSON은 일반적으로 XML보다 더 간결하고 파싱이 빠르며 읽기 쉽습니다. XML은 자세한 여는/닫는 태그를 사용하며 속성, 네임스페이스, 주석을 지원합니다. JSON은 대부분의 언어에 있는 데이터 구조(객체와 배열)에 직접 매핑됩니다. JSON은 REST API에서 XML을 대체했지만 XML은 SOAP 서비스, 문서 형식(SVG, DOCX), 엔터프라이즈 시스템에서 여전히 사용됩니다.
JSON에서 후행 쉼표가 허용되지 않는 이유는 무엇입니까?
후행 쉼표(객체나 배열의 마지막 항목 뒤에 오는 쉼표)는 JSON 사양(RFC 8259)에서 유효하지 않습니다. 이는 파서를 단순화하기 위한 엄격한 설계 결정입니다. JavaScript 자체는 배열과 객체 리터럴에서 후행 쉼표를 허용하지만 JSON.parse()는 SyntaxError를 발생시킵니다. 더 관대한 형식이 필요하다면 JSON5 또는 JSONC(주석이 있는 JSON)를 고려하되 전용 파서가 필요합니다.
관련 개발자 도구
- Base64 인코더 / 디코더 — URL-safe 변형을 포함하여 Base64 문자열을 즉시 인코딩 및 디코딩
- URL 인코더 / 디코더 — URL 컴포넌트와 쿼리 문자열을 퍼센트 인코딩 및 디코딩
- JWT 디코더 및 검사기 — JWT 토큰 디코딩, 클레임 및 만료 카운트다운 검사
- 정규식 테스터 — 실시간 매칭 강조와 캡처 그룹 분석으로 정규식 테스트