사용 방법
입력창에 JSON을 붙여넣으면 결과가 나옵니다. “방식”에서 정렬을 고르면 들여쓰기(공백 2칸·4칸·탭)를 적용해 구조를 한눈에 볼 수 있게 하고, 압축을 고르면 불필요한 공백과 줄바꿈을 모두 없애 크기를 줄입니다. 검증을 고르면 값을 바꾸지 않고 문법이 올바른지만 확인합니다. 옵션에서 “키 정렬”을 켜면 모든 객체의 키를 재귀적으로 알파벳(정확히는 유니코드 코드 유닛) 순서로 정렬하고, “ASCII 외 문자 이스케이프”를 켜면 한글·이모지 같은 문자를 \uXXXX 형태로 바꿉니다. 입력한 JSON이 올바르지 않으면 결과 대신 오류가 몇 번째 줄·칸에 있는지와 그 주변 코드를 함께 보여줍니다.
정렬·압축·검증은 서로 다른 일을 합니다
세 방식 모두 같은 JSON을 다루지만 목적이 다릅니다. “정렬(pretty-print)“은 사람이 읽기 쉽도록 들여쓰기와 줄바꿈을 넣는 것이고, “압축(minify)“은 반대로 파일 크기를 줄이기 위해 그런 여백을 모두 없애는 것입니다. 두 방식 모두 값 자체는 그대로 유지합니다 — 다만 아래 “큰 정수는 정밀도를 잃을 수 있습니다”에서 설명하는 경우(범위를 벗어난 숫자가 null이 되는 경우, 중복된 키에서 마지막 값만 남는 경우)는 예외이고, 여기에 하나 더 있습니다: 입력의 -0은 결과에서 0으로 바뀝니다. “검증(validate)“은 값을 표시하는 목적이 아니라 이 JSON이 문법적으로 올바른지만 확인하는 데 씁니다. 세 방식 모두 내부적으로는 같은 파서를 거치므로, 정렬이나 압축이 성공했다는 것 자체가 이미 그 JSON이 올바르다는 뜻이기도 합니다.
JSON 문법에서 자주 하는 실수
JSON은 문법이 간단하지만 그만큼 사소한 실수에 엄격합니다. 자주 나오는 문제로는 배열이나 객체의 마지막 항목 뒤에 남는 쉼표(trailing comma, 예: [1, 2, 3,]), 문자열이나 키를 작은따옴표로 감싼 경우(JSON은 큰따옴표만 허용합니다), 키에 따옴표를 아예 붙이지 않은 경우({name: "a"}), 코드에 남겨둔 //나 /* */ 주석, 숫자 앞에 불필요하게 붙은 0(01), 그리고 undefined나 후행 쉼표가 있는 자바스크립트 객체 리터럴을 그대로 JSON이라고 착각하는 경우가 있습니다. 이런 입력은 “주석·trailing comma 허용” 옵션을 켜면 주석과 trailing comma까지는 자동으로 정리한 뒤 파싱하지만, 작은따옴표나 따옴표 없는 키처럼 그 밖의 문법 오류는 여전히 고쳐야 합니다.
JSON과 JSON5·JSONC의 차이
“JSON”은 RFC 8259·ECMA-404가 정의한 엄격한 표준으로, 주석이나 trailing comma를 허용하지 않고 문자열은 반드시 큰따옴표로 감싸야 합니다. “JSON5”와 “JSONC”(JSON with Comments, VS Code의 설정 파일 등에서 흔히 씀)는 이 표준을 사람이 쓰기 편하게 확장한 방언으로, 주석과 trailing comma, 경우에 따라 따옴표 없는 키까지 허용합니다. 이 도구는 기본적으로 표준 JSON만 검사하지만, “주석·trailing comma 허용” 옵션을 켜면 흔히 쓰이는 JSON5·JSONC 스타일 입력(주석과 trailing comma)을 표준 JSON으로 정리한 뒤 처리합니다. 다만 이 옵션은 문자열 안의 //나 쉼표는 건드리지 않도록 만들어져 있습니다.
큰 정수는 정밀도를 잃을 수 있습니다
자바스크립트의 숫자 타입은 하나뿐이며 IEEE 754 배정밀도 부동소수점을 씁니다. 이 방식은 정수를 2^53 - 1(9007199254740991, 16자리)까지만 오차 없이 표현할 수 있어서, 이보다 긴 정수 리터럴(예: 일부 시스템에서 쓰는 64비트 스노플레이크 ID)이 JSON에 있으면 JSON.parse가 그 값을 가장 가까운 표현 가능한 숫자로 반올림해 마지막 몇 자리가 바뀔 수 있습니다. 문제는 이 과정에서 오류가 나지 않고 조용히 값만 달라진다는 점입니다. 이 도구는 파싱하기 전에 원문 텍스트에서 16자리 이상인 정수 리터럴을 찾아 경고만 보여주고, 값을 임의로 문자열로 바꾸는 등의 처리는 하지 않습니다(그렇게 바꾸면 결과가 원래 문서 구조와 달라지기 때문입니다). 이런 큰 정수의 정확한 값이 꼭 필요하다면 애초에 문자열로 저장하거나, 큰 정수를 안전하게 다루는 다른 도구를 함께 써야 합니다.
오류 없이 값이 바뀌는 경우가 두 가지 더 있으며, 이 도구는 둘 다 경고합니다. 1e400처럼 배정밀도로 아예 표현할 수 없을 만큼 큰 숫자는 Infinity로 읽혀 결과에서 null이 됩니다. 또 한 객체 안에 같은 키가 두 번 이상 나오면 JSON.parse는 마지막 값만 남기고 앞의 값은 조용히 버립니다.
개인정보
입력한 JSON은 이 브라우저 안에서만 처리되며 어디에도 저장되거나 전송되지 않습니다. 페이지를 닫으면 입력 내용도 함께 사라집니다.