JSON 포맷터
무료 온라인 JSON 유효성 검사기, 정렬(예쁘게 출력) 및 압축(minify) 도구입니다.
조회수 1,447회
작동 방식
JSON(JavaScript Object Notation)은 단순히 "자바스크립트풍 데이터"가 아니라 RFC 8259로 정의된 엄격하고 독립적인 형식입니다. 문법은 자바스크립트 객체 리터럴과 비슷해 보이지만 규칙은 훨씬 더 엄격합니다. 모든 키와 모든 문자열 값은 반드시 큰따옴표("key")를 사용해야 하며 작은따옴표는 절대 허용되지 않습니다. 객체나 배열의 마지막 요소 뒤에 오는 쉼표, 즉 트레일링 쉼표는 명백한 구문 오류입니다. 그리고 undefined, 함수, 주석, NaN 같은 자바스크립트 전용 개념은 JSON에 전혀 대응되지 않습니다. 이 도구는 입력한 내용을 브라우저 내장 JSON.parse() 엔진으로 그대로 처리하므로, 실제 운영 환경의 API 클라이언트나 설정 로더가 사용하는 것과 동일한 파서이며 여기서 표시되는 오류는 실제 시스템에서도 동일하게 발생합니다.
예를 들어 {'id': 12, 'active': true,}는 두 가지 이유로 유효성 검사에 실패합니다. id 주위의 작은따옴표가 유효하지 않고, true 뒤의 트레일링 쉼표도 유효하지 않습니다. 올바른 형태는 {"id": 12, "active": true}입니다. JSON이 정상적으로 파싱되면 정렬(Beautify) 기능이 중첩된 모든 단계를 다시 들여쓰기 하므로, 배열 안의 객체, 그 안의 배열까지 눈으로 추적할 수 있게 됩니다. 이는 API 응답에서 여섯 단계 깊이에 숨어 있는 괄호 하나를 찾을 때 특히 중요합니다. 압축(Minify)은 정반대로 동작합니다. 불필요한 공백 문자를 모두 제거해 결과를 한 줄로 압축하므로 저장 공간과 네트워크 전송량이 줄어듭니다. 두 모드 모두 데이터 자체는 완전히 동일하게 유지되며 사람이 보는 레이아웃만 달라집니다.
이런 도구는 일상적인 개발 작업에서 진가를 발휘합니다. 코드를 작성하기 전에 원본 API 응답을 붙여넣어 실제 구조를 확인하거나, 배포가 실패하기 전에 .env 계열 설정 파일에서 엉뚱한 쉼표를 찾아내거나, 브라우저 개발자 도구의 네트워크 탭에서 복사한 — 대개 읽을 수 없는 하나의 거대한 줄로 되어 있는 — 페이로드를 눈으로 훑어볼 수 있는 형태로 바꾸는 작업 등입니다.
알아두어야 할 사항
- 모든 처리는 로컬에서 이루어집니다. 어떤 텍스트도 서버로 업로드되지 않으며, 유효성 검사·정렬·압축 모두 브라우저 자체의 자바스크립트 엔진에서 실행됩니다.
- 큰 정수는 정밀도를 잃을 수 있습니다. JSON 숫자는 IEEE 754 배정밀도 부동소수점 규칙을 따르므로, 약 2^53을 넘는 64비트 ID는 문자열로 유지하지 않고 네이티브 숫자로 파싱할 경우 소리 없이 반올림될 수 있습니다.
- 키 순서는 명세에서 보장하지 않습니다. 대부분의 파서가 실제로는 삽입 순서를 유지하긴 하지만, 이에 의존하는 로직을 작성해서는 안 됩니다.
- 최상위 값이 반드시 객체일 필요는 없습니다. 최신 JSON(RFC 8259 기준)은 루트에 단독 문자열, 숫자, 불리언,
null, 배열을 허용합니다 —"hello"와42모두 그 자체로 완전히 유효한 JSON 문서입니다.
자주 묻는 질문
JSON이 유효한지 어떻게 확인하나요?
입력창에 JSON을 붙여넣고 정렬(Beautify) 버튼을 누르십시오. 데이터가 유효하면 "유효한 JSON입니다"라는 확인 메시지가 표시됩니다. 그렇지 않으면 JSON.parse()가 보고하는 것과 정확히 동일한 방식으로 문제의 종류와 위치(줄/열)를 알려주는 오류 메시지가 표시되므로, 문서 전체를 훑어보지 않고도 문제가 되는 문자로 곧바로 이동할 수 있습니다.
예쁘게 출력하기(pretty print)와 압축(minify)의 차이는 무엇인가요?
예쁘게 출력하기(정렬)는 들여쓰기와 줄바꿈을 추가해 사람이 중첩 구조를 읽기 쉽게 만들어 주므로, 데이터를 직접 다루거나 디버깅할 때 유용합니다. 압축은 불필요한 공백을 모두 제거해 한 줄로 만들어 주므로 저장 공간이 줄고 전송 속도가 빨라지며 원본과 의미상 완전히 동일합니다. 두 방식 모두 실제 데이터를 바꾸지 않으며, 몇 바이트와 줄바꿈으로 표현되는지만 달라집니다.
자바스크립트는 허용하는데 JSON은 왜 작은따옴표와 트레일링 쉼표를 거부하나요?
JSON은 자바스크립트 그 자체가 아니라 별도의, 더 엄격한 명세(RFC 8259)입니다. 자바스크립트 객체 리터럴은 편의를 위해 작은따옴표, 따옴표 없는 키, 트레일링 쉼표를 허용하지만, 이 중 어느 것도 유효한 JSON은 아닙니다. 어떤 언어나 백엔드에서든 실제 JSON.parse() 호출은 이를 거부합니다. 이러한 엄격함은 의도된 것으로, 수십 개의 언어가 동일하게 파싱할 수 있을 만큼 JSON을 단순하게 유지해 줍니다.
민감한 JSON을 여기에 붙여넣어도 안전한가요?
네, 안전합니다. 서식 지정은 전적으로 브라우저 안에서 자바스크립트로 이루어지며, 데이터가 서버로 전송되거나 어디에도 저장되지 않습니다. 유효성 검사·정렬·압축 단계에는 네트워크 요청이 전혀 관여하지 않습니다. 페이지를 닫으면 데이터가 완전히 사라지므로, API 키나 토큰, 개인정보가 포함된 JSON에도 안심하고 사용할 수 있습니다.
JSON이 멀쩡해 보이는데도 계속 실패하는 이유는 무엇인가요?
눈에 잘 띄지 않는 흔한 원인으로는 마지막 속성 뒤의 트레일링 쉼표, 워드 프로세서에서 붙여넣은 곧은 큰따옴표가 아닌 스마트(둥근) 따옴표, 문자열 안에서 이스케이프되지 않은 큰따옴표, 두 속성 사이의 쉼표 누락 등이 있습니다. 먼저 표시된 줄/열 번호를 확인하십시오 — 대부분 실제 문제와 무관한 곳이 아니라 문제가 되는 지점 또는 그 바로 앞을 가리킵니다.
비슷한 도구
문제 신고하기
JSON 포맷터
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!