JSON 정렬기 사용법
- API 응답, 설정 파일, 로그 한 줄 같은 JSON을 입력란에 붙여 넣으세요. 붙여 넣는 즉시 검사하고 정렬합니다.
- 정렬을 고르면 공백 2칸, 4칸 또는 탭으로 들여쓴 읽기 쉬운 모양이 되고, 압축(한 줄)을 고르면 값 사이의 공백과 줄바꿈을 모두 없앱니다.
- 키를 A–Z 순으로 정렬에 체크하면 모든 객체의 속성이 알파벳순으로 바뀌어, 같은 데이터의 두 버전을 비교하기 쉬워집니다. 배열의 순서는 바뀌지 않습니다.
- 결과 옆의 복사를 누르면 끝입니다. JSON이 올바르지 않으면 문제, 줄과 열, 그리고 그 줄 아래에 ^ 표시로 위치를 보여 줍니다.
정렬·압축·포맷 검사가 하는 일
흔히 “JSON 정렬”이라고 부르는 작업은 영어로 beautify 또는 pretty print라고 하며, 속성과 배열 항목을 한 줄에 하나씩 놓고 중첩 깊이만큼 들여씁니다. 압축은 그 반대로 가장 짧은 모양을 만듭니다. 둘 다 데이터 자체는 바꾸지 않습니다. 포맷 검사는 JSON 표준인 RFC 8259(ECMA-404와 같은 문법)에 맞는지 확인합니다. 키와 문자열은 큰따옴표, 끝 쉼표 금지, 주석 금지, true·false·null은 소문자, 숫자에는 앞자리 0이나 NaN·Infinity 금지 같은 규칙입니다. 처음 발견한 오류를 알려 줍니다.
많은 온라인 JSON 정렬 사이트는 JavaScript의 JSON.parse로 읽은 다음 다시 출력합니다. 이 도구는 글자를 직접 읽기 때문에 모든 값을 쓰인 그대로 남깁니다.
- 큰 숫자가 반올림되지 않습니다. JavaScript는 9,007,199,254,740,991(253 − 1)까지의 정수만 정확히 다룹니다.
JSON.parse를 거치면 주문번호 12345678901234567890이 12345678901234567000으로 바뀝니다. 여기서는 그대로이고, 12.50이나 1E+2 같은 표기도 바뀌지 않습니다. - 키 순서가 유지됩니다. JavaScript 객체는 “1”, “2”처럼 정수로 보이는 키를 맨 앞으로 옮기므로
JSON.parse를 거치면 순서가 달라집니다. 여기서는 정렬에 체크했을 때만 순서가 바뀝니다. - 문자열은 한 글자씩 그대로 옮깁니다.
\uD55C,\/같은 이스케이프도, 한글을 \u 형식으로 바꾸는 일도 없습니다. - 중복 키를 셉니다. 어느 값이 이기는지 프로그램마다 다르기 때문에 RFC 8259는 한 객체 안의 키 이름이 겹치지 않도록 권합니다.
자주 나오는 JSON 오류와 고치는 법
| 오류 | 잘못된 예 | 올바른 예 |
|---|---|---|
| 끝에 남은 쉼표 | {"a": 1, "b": 2,} | {"a": 1, "b": 2} |
| 작은따옴표 | {'name': '민준'} | {"name": "민준"} |
| 따옴표 없는 키 이름 | {name: "민준"} | {"name": "민준"} |
| 주석 | {"port": 80 // web} | {"port": 80} |
| 쉼표 없음 | [1 2 3] | [1, 2, 3] |
| 메신저·문서에서 바뀐 둥근 따옴표 | {“a”: 1} | {"a": 1} |
| Python·JavaScript 값 | {"x": None, "y": True, "z": undefined} | {"x": null, "y": true, "z": null} |
| 앞자리 0(우편번호) | {"zip": 06236} | {"zip": "06236"} |
| 백슬래시 하나 | {"path": "C:\Users"} | {"path": "C:\\Users"} |
| 값 여러 개를 이어 붙임 | {"a": 1} {"b": 2} | [{"a": 1}, {"b": 2}] |
한국 우편번호는 서울 강남구의 06236처럼 0으로 시작하는 경우가 많아, 숫자로 넣으면 “잘못된 숫자” 오류가 나거나 다른 프로그램에서 6236으로 바뀝니다. 우편번호, 전화번호, 사업자등록번호는 항상 문자열로 넣으세요. 또 닫는 괄호가 빠지면 파서는 끝까지 읽은 뒤에야 알아채므로, “JSON이 중간에 끝남”은 마지막 줄을 가리킵니다. 실제로 빠진 }나 ]는 더 위에 있으니, 올바른 부분을 정렬해 보고 들여쓰기가 어긋나는 곳을 찾는 것이 가장 빠릅니다.
계산 예: 들여쓰기로 크기가 얼마나 늘까
입력란의 예시는 온라인 쇼핑몰 주문 한 건을 담은 한 줄짜리 API 응답으로, 325바이트에 키 18개, 중첩 4단계입니다. UTF-8에서 한글은 한 글자에 3바이트, 영문과 숫자는 1바이트입니다. 정렬하면 27줄이 되고 크기는 다음과 같습니다.
| 출력 | 크기 |
|---|---|
| 압축(한 줄) | 325바이트 |
| 탭 | 441바이트 |
| 공백 2칸 | 513바이트 |
| 공백 4칸 | 657바이트 |
탭은 한 단계에 1바이트만 쓰기 때문에 정렬한 결과 중 가장 작습니다. 사람이 읽고 고치는 파일이라면 늘어난 바이트보다 읽기 쉬운 쪽이 대개 낫고, 대량으로 보내거나 저장하는 JSON은 압축하는 것이 좋습니다.
한계와 팁
- 큰 파일: 1MB짜리 JSON은 보통 노트북에서 1초 정도면 검사와 정렬이 끝나고, 긴 결과도 부드럽게 스크롤됩니다. 수십 MB 파일에는 jq 같은 명령줄 도구가 더 편합니다.
- JSON Lines(NDJSON) 파일은 한 줄에 JSON 값 하나를 담으며, 전체가 하나의 JSON 문서는 아닙니다. 한 줄씩 붙여 넣거나, 전체를
[ ]로 감싸고 줄 사이에 쉼표를 넣으세요. - JSON5와 “주석이 있는 JSON”은 일부 설정 파일에서 쓰이며 주석과 끝 쉼표를 허용합니다. 표준 JSON은 허용하지 않으므로 여기서는 오류로 나옵니다.
- 오류는 첫 번째 것만 보여 줍니다. 고치면 다음 오류가 있을 때 바로 나타납니다.
- Base64로 인코딩된 JSON(예: JWT의 가운데 부분)은 먼저 Base64 디코딩으로 풀어서 붙여 넣으세요. 문자열의 글자 수와 바이트 수는 글자 수 세기로 잴 수 있습니다.
JSON은 기기 밖으로 나가지 않습니다
정렬과 검사는 브라우저 안에서 이루어집니다. JSON에는 API 키, 토큰, 고객 정보가 들어 있는 경우가 많지만, 어느 것도 업로드되거나 기록되지 않습니다. 저장도 되지 않으므로 페이지를 새로 고치면 사라집니다.
자주 묻는 질문
JSON이 서버로 전송되나요?
아니요. 페이지가 브라우저의 JavaScript로 정렬하고 검사하므로 회사 내부 데이터에도 쓸 수 있고, 페이지를 한 번 연 뒤에는 오프라인에서도 동작합니다.
JavaScript에서는 되는데 JSON 검사에서는 오류가 나는 이유는?
JavaScript 객체 리터럴은 따옴표 없는 키 이름, 작은따옴표, 끝 쉼표, 주석, undefined와 함수를 허용하지만 JSON은 허용하지 않습니다. JSON은 모든 언어가 똑같이 읽을 수 있도록 더 엄격하게 정한 데이터 형식입니다.
“JSON이 중간에 끝남”은 무슨 뜻인가요?
무언가가 열린 채로 글이 끝났다는 뜻입니다. 대개 }나 ]가 빠졌거나, 닫는 따옴표가 없는 문자열이 있습니다. 복사하다가 끝이 잘린 경우에도 나옵니다.
키를 정렬하면 데이터가 달라지나요?
아니요. RFC 8259는 객체를 순서 없는 이름/값 쌍의 모음으로 정의하므로 키 순서에는 의미가 없습니다. 배열은 순서에 의미가 있어서 항목을 정렬하지 않습니다.
JSON을 한 줄로 만들려면?
출력에서 압축(한 줄)을 고르면 줄바꿈과 들여쓰기를 모두 없앤 한 줄 JSON이 됩니다. 문자열 안의 공백과 \n은 데이터의 일부라서 그대로 남습니다.
최종 수정일: 2026년 10월 16일