JSON 포맷터 · 검사기
JSON의 구조를 보기 좋게 정리하세요. 문법을 확인하고 들여쓰기 또는 압축 형태로 출력할 수 있습니다.
입력값은 브라우저에서만 처리되며 서버로 전송되지 않습니다.
빠른 사용법
- 원본 JSON을 붙여 넣으세요.
- 정렬 또는 압축을 선택하세요.
- 큰 정수·중복 키는 원본과 비교하세요.
정렬·압축이 하는 일
브라우저의 JSON.parse로 읽은 값을 JSON.stringify로 다시 출력합니다. 들여쓰기나 공백을 정리하지만 JSON Schema나 업무 규칙까지 검증하는 것은 아닙니다.
{"name":"PPORT","ports":[80,443],"enabled":true}자주 발생하는 문법 오류
| 입력 형태 | 이유 |
|---|---|
| {'name':'PPORT'} | 키와 문자열에는 큰따옴표가 필요합니다. |
| {"port":80,} | 마지막 항목 뒤의 쉼표는 허용되지 않습니다. |
| 주석·undefined·NaN | 표준 JSON 값이 아닙니다. |
원본과 달라질 수 있는 값
같은 이름의 키가 여러 번 있으면 파싱 과정에서 앞선 값이 사라질 수 있습니다. 2⁵³−1을 넘는 정수는 JavaScript Number의 정밀도 범위를 벗어날 수 있습니다. 계좌·거래 식별자처럼 숫자 모양의 ID는 시스템 설계에 따라 문자열로 보관하세요.
이 도구는 최대 100단계 중첩을 지원합니다. 정상 JSON이어도 크기·깊이 제한으로 거부될 수 있습니다. 입력값은 서버로 보내지 않습니다.
API 식별자를 바꾸지 않고 JSON 정리하기
{"id":9007199254740993,"amount":1.2300,"id":2}를 정렬해 비교하세요. 이 도구는 숫자 표기·문자열 이스케이프·키 순서·중복 키를 그대로 두고 공백만 정리합니다. 중복 키를 보존하더라도 수신 프로그램에 따라 해석이 달라질 수 있으므로 API 전송 전에 해결하세요. 키 개수 등 통계는 브라우저가 파싱한 객체 기준이며 중복 키는 하나로 계산됩니다. 입력은 서버로 전송하지 않습니다.
큰 정수가 바뀌는지 직접 확인하기
같은 JSON이라도 읽는 언어에 따라 큰 정수가 달라질 수 있습니다. JavaScript는 숫자를 배정밀도 부동소수점으로 읽어 2⁵³을 넘는 정수가 반올림되지만, Python은 정수를 그대로 유지합니다.
$ node -e "console.log(JSON.stringify(JSON.parse('{\"id\":9007199254740993}')))"
{"id":9007199254740992}
$ python -c "import json; print(json.dumps(json.loads('{\"id\":9007199254740993}')))"
{"id": 9007199254740993}API에서 받은 ID가 이처럼 끝자리만 다르게 보이면 JSON 문법 오류가 아니라 숫자 정밀도 문제입니다. 보내는 쪽에서 ID를 문자열로 바꾸는 것이 가장 확실합니다.
명령줄에서 정렬·압축하기
python -m json.tool data.json
jq . data.json
jq -c . data.json
Get-Content data.json -Raw | ConvertFrom-Json | ConvertTo-Json -Depth 20python -m json.tool과 jq .은 들여쓰기를 맞추고, jq -c .은 한 줄로 압축합니다. PowerShell의 ConvertTo-Json은 -Depth를 생략하면 2단계까지만 펼치고 더 깊은 값은 문자열로 바꿔 버리므로, 중첩이 깊은 JSON은 -Depth를 충분히 크게 지정하세요.