사용 방법
“방식”에서 세 가지 중 하나를 고릅니다.
- 포맷: 줄을 나누고 들여써서 구조가 보이게 합니다. 들여쓰기는 목록에서 “공백 2칸”, “공백 4칸”, “탭” 중에 고릅니다.
- 압축: 값 사이의 공백과 줄바꿈을 모두 없애 한 줄로 만듭니다. 이 방식에서는 들여쓰기 목록이 사라집니다.
- 검증: 결과는 포맷과 똑같이 나오고, 문법이 맞으면 “올바른 JSON입니다.” 표시가 하나 더 붙습니다. 포맷이나 압축 결과가 나왔다면 그 입력은 이미 문법 검사를 통과한 것입니다.
체크박스는 세 방식 모두에 적용됩니다.
- 키 정렬: 안쪽에 겹쳐 있는 객체까지 모든 객체의 키를 문자 코드 순서로 정렬합니다. 대문자가 소문자보다 앞에 오고, 영문자는
é,가,日처럼 ASCII가 아닌 글자보다 앞에 옵니다.{"z":1,"a":{"c":2,"b":3}}은{"a":{"b":3,"c":2},"z":1}이 됩니다. 배열 안의 순서는 건드리지 않습니다. - ASCII 외 문자 이스케이프 (\uXXXX): 악센트가 붙은 글자나 이모지처럼 ASCII가 아닌 문자를
\uXXXX표기로 바꿉니다."é😀"는"\u00e9\ud83d\ude00"이 됩니다. 이모지는 코드 두 개로 나뉘어 적힙니다. - 주석·trailing comma 허용 (JSON5/JSONC): 아래 별도 항목에서 설명합니다.
결과 아래에는 숫자 세 개가 나옵니다. “키 개수”는 안쪽 객체의 키까지 모두 센 값이고, “중첩 깊이”는 가장 바깥 괄호를 1로 셉니다. “크기”는 입력이 아니라 결과의 UTF-8 바이트 수입니다. {"order":{"id":1001,"items":[{"sku":"A1","qty":2}],"paid":true}}를 공백 2칸으로 포맷하면 키 개수 6, 중첩 깊이 4, 크기 129B입니다. 같은 입력을 압축으로 바꾸면 크기만 줄어듭니다.
값은 같지만 표기가 달라지는 곳
이 도구는 입력을 브라우저의 JSON 해석기(JSON.parse)로 읽은 뒤 다시 글자로 내보냅니다. 그래서 공백만 바뀌는 것이 아니라, 뜻이 같은 다른 표기로 적혀 있던 부분은 한 가지 표기로 통일됩니다.
| 입력 | 결과 |
|---|---|
1.0 |
1 |
0.10 |
0.1 |
1e2 |
100 |
1E-7 |
1e-7 |
-0 |
0 |
"\u00e9" |
"é" |
"a\/b" |
"a/b" |
숫자 값이나 문자열 내용은 그대로이지만, 원문과 글자 단위로 비교하는 용도(서명 검증, 해시 비교, 줄 단위 diff)라면 이 차이가 드러납니다. -0만은 부호가 사라지므로 음의 0을 구분하는 프로그램에 넘길 데이터라면 주의하세요.
값이 실제로 바뀔 때 뜨는 경고 세 가지
오류 없이 결과가 나오지만 값이 원문과 달라지는 경우가 있습니다. 이 도구는 그중 세 경우를 결과와 함께 경고로 알려 줍니다. 경고가 떠도 결과는 그대로 나옵니다.
- 15자리를 넘는 정수: 자바스크립트 숫자는 정수를 2^53 - 1(9007199254740991)까지만 정확히 담습니다.
{"id":9007199254740993}을 넣으면 결과는9007199254740992로, 끝자리가 바뀝니다. 경고는 실제로 값이 바뀌었는지가 아니라 자릿수(16자리 이상인 정수)로 판단하므로,1234567890123456처럼 값이 그대로인 16자리 정수에도 뜹니다. 소수점이나 지수가 있는 숫자와 문자열 안의 숫자는 세지 않습니다. 큰 ID를 정확히 보존해야 하면 데이터를 만드는 쪽에서 문자열("id":"9007199254740993")로 내보내야 합니다. - 표현할 수 있는 범위를 벗어난 숫자:
1e400처럼 너무 큰 숫자는 결과에서null이 됩니다. - 같은 객체 안의 중복 키:
{"a":1,"a":2}는{"a":2}가 됩니다. 앞의 값은 사라지고 마지막 값만 남습니다. 경고에는 중복된 키 이름이 다섯 개까지 표시됩니다.
오류 위치 읽는 법
문법이 틀리면 결과 대신 “올바른 JSON이 아닙니다. 3행 21열 부근을 확인하세요.” 같은 안내와 함께, 그 줄의 앞뒤와 ^ 표시가 나옵니다.
2 | "name": "a",
3 | "tags": ["x", "y",]
| ^
4 | }
^가 가리키는 곳은 더 읽을 수 없게 된 첫 글자입니다. 원인은 그 자리이거나 바로 앞에 있습니다. 위 예에서 ^는 ]를 가리키지만 고칠 것은 그 앞의 쉼표입니다. 오류는 처음 만난 하나만 알려 주므로, 고친 뒤에 다음 오류가 나올 수 있습니다.
자주 걸리는 입력은 다음과 같습니다.
- 마지막 항목 뒤의 쉼표:
[1, 2, 3,] - 작은따옴표 문자열이나 따옴표 없는 키:
{'a': 1},{a: 1} //,/* */주석- 앞에 0이 붙은 숫자:
01 NaN,undefined처럼 JSON에 없는 값- 문자열 안에 그대로 들어간 줄바꿈 (
\n으로 적어야 합니다)
이 가운데 쉼표와 주석 두 가지만 아래 옵션으로 넘어갈 수 있고, 나머지는 직접 고쳐야 합니다.
주석·trailing comma 허용 옵션이 하는 일
표준 JSON(RFC 8259, ECMA-404)은 주석과 마지막 항목 뒤의 쉼표(trailing comma)를 허용하지 않습니다. 하지만 편집기 설정 파일처럼 사람이 직접 고치는 파일에는 이를 허용하는 변형인 JSONC(JSON with Comments)나 JSON5가 흔히 쓰입니다. “주석·trailing comma 허용 (JSON5/JSONC)“을 켜면 해석하기 전에 // 주석, /* */ 주석, 닫는 괄호 바로 앞의 쉼표를 지웁니다. 문자열 안에 있는 //나 쉼표는 지우지 않으므로 "http://x//y" 같은 값은 그대로입니다.
알아 둘 점이 세 가지 있습니다.
- 지원하는 것은 주석과 쉼표뿐입니다. JSON5가 허용하는 작은따옴표나 따옴표 없는 키는 옵션을 켜도 오류입니다.
- 결과는 표준 JSON이라 주석이 남지 않습니다. 주석을 보존한 채 들여쓰기만 다듬는 용도로는 쓸 수 없습니다.
- 옵션을 켠 채 오류가 나도 오류 조각은 주석을 지우기 전의 입력을 그대로 보여 줍니다. 행 번호와 열 번호도 원문 기준이라, 같은 줄의 오류 위치보다 앞에
/* */주석이 있어도 열 번호가 어긋나지 않습니다.
받은 데이터가 표준 JSON인지 확인하려는 목적이라면 이 옵션을 꺼 두세요. 켜 두면 주석이 섞인 입력도 통과합니다.
