JSON 정렬·검사·압축하는 방법
- 위쪽 상자에 JSON을 붙여 넣으세요. 입력하는 동안 바로 검사하며, 상태 줄이 초록색이나 빨간색으로 바뀝니다.
- 포맷을 누르면 공백 2칸, 공백 4칸, 탭 중 고른 들여쓰기로 보기 좋게 정리하고, 압축을 누르면 불필요한 공백과 줄바꿈을 모두 지웁니다. 객체의 키를 순서대로 놓으려면 키 정렬 (A→Z)에 체크하세요.
- 결과를 복사하거나
data.json파일로 다운로드하세요. 어떻게 동작하는지 먼저 보고 싶다면 예시를 누르면 작은 샘플이 들어갑니다.
올바른 JSON이면 상태 줄에 내용이 요약됩니다. 예를 들어 유효한 JSON · 키 7개 객체 · 221자처럼 나옵니다. 이 글자 수는 예시 데이터를 공백 2칸으로 정리했을 때의 값이며, 같은 데이터를 압축하면 159자, 공백 4칸이면 259자입니다. 정리와 압축은 값 사이의 공백만 바꾸므로 데이터 자체는 달라지지 않습니다.
오류 고치기
JSON이 잘못되었으면 상태 줄에 파서의 오류 메시지와 함께 문제가 생긴 줄과 열이 나옵니다. 포맷이나 압축을 누르면 입력 상자의 커서도 그 위치로 옮겨 갑니다. 메시지 문구는 브라우저가 만들기 때문에 Chrome, Firefox, Safari마다 다릅니다. 흔한 원인은 다음과 같습니다.
| 실수 | 예 | 고치는 법 |
|---|---|---|
| 끝에 남은 쉼표 | {"a":1,} | 마지막 항목 뒤의 쉼표를 지웁니다 |
| 작은따옴표 | {'name': 'Alice'} | 키와 문자열에 큰따옴표를 씁니다 |
| 따옴표 없는 키 | {name: "Alice"} | 모든 키를 "name"처럼 감쌉니다 |
| 주석 | {"a": 1 /* note */} | 주석을 지웁니다. 표준 JSON에는 주석이 없습니다 |
| 빠진 쉼표 | {"a": 1 "b": 2} | 항목 사이에 쉼표를 넣습니다 |
| 닫히지 않은 괄호 | [1, 2, 3 | 닫는 ]나 }를 넣습니다 |
| 앞자리 0 | {"a": 007} | 7로 쓰거나 문자열 "007"로 씁니다 |
| JSON에 없는 값 | NaN, undefined, True, None | null, true, false를 씁니다 |
| 문자열 안의 실제 줄바꿈 | 두 줄에 걸쳐 입력한 문자열 | 줄바꿈을 \n으로 씁니다 |
| 문서 여러 개 | {"a":1} 다음 줄에 {"a":2} | 쉼표로 구분해 [ ]로 감쌉니다 |
True/None이 보인다면 json.dumps()로 변환하지 않고 그냥 출력한 Python 딕셔너리일 가능성이 큽니다. 마지막 행은 여러 로그 파일이 쓰는 JSON Lines 형식으로, 한 줄 한 줄이 별도의 문서입니다.
올바른 JSON의 조건
JSON은 RFC 8259와 ECMA-404 표준에 정의되어 있습니다. JSON 텍스트는 값 하나입니다. { } 안의 객체, [ ] 안의 배열, 큰따옴표로 감싼 문자열, 숫자, 또는 true, false, null 중 하나입니다. 그래서 42나 "hello"만 있어도 올바른 JSON입니다. 이 검사기는 표준을 엄격하게 따르므로 JSON5나 일부 편집기 설정 파일이 쓰는 “주석 있는 JSON” 같은 완화된 형식은 오류로 처리합니다.
정리할 때 바뀔 수 있는 것
이 도구는 JSON을 JavaScript 값으로 읽은 뒤 다시 써내기 때문에, 그 과정에서 몇 가지가 표준 형태로 바뀝니다.
- 숫자는 가장 짧은 형태로 다시 씁니다.
1.0은1,1.50은1.5,1e3은1000이 됩니다. 9,007,199,254,740,991보다 큰 정수는 정밀도를 잃어12345678901234567890이12345678901234567000이 되고,1e400처럼 표현할 수 없을 만큼 큰 수는null이 됩니다. - 이스케이프는 단순해집니다.
"café"는"café"로,\/는/로 바뀝니다. 탭 같은 제어 문자는 계속 이스케이프된 상태로 남습니다. - 중복된 키는 하나로 합쳐지고 마지막 값이 남습니다.
{"a":1,"b":2,"a":3}은{"a":3,"b":2}가 됩니다. - 정수처럼 생긴 키는 숫자 순서대로 맨 앞으로 옵니다.
{"b":1,"2":"two","a":3,"10":"ten"}은{"2":"two","10":"ten","b":1,"a":3}이 됩니다. JavaScript가 객체 속성의 순서를 정하는 방식 때문입니다.
큰 숫자와 중복 키의 경우를 빼면 이런 변화가 데이터의 의미를 바꾸지는 않습니다. 표준에서 객체 멤버는 순서가 없는 것으로 정의되고, 숫자나 문자열의 두 표기는 같은 값이기 때문입니다. ID가 그만큼 크다면 문자열로 저장하세요.
키 정렬
키 정렬 (A→Z)은 모든 단계의 모든 객체에서 키를 정렬합니다. 배열은 항목의 순서 자체에 의미가 있으므로 순서를 바꾸지 않습니다. 키는 문자 코드로 비교하므로 대문자가 밑줄보다, 둘 다 소문자보다 앞에 옵니다: Zip, _id, age, name. 키를 정렬해 두면 두 API 응답이나 설정 파일을 텍스트 비교로 비교하기가 훨씬 쉬워집니다.
자주 묻는 질문
JSON이 서버로 전송되나요?
아니요. 브라우저가 직접 읽고 정리하므로, 여기에 붙여 넣은 API 응답, 토큰, 고객 정보는 내 컴퓨터 밖으로 나가지 않습니다.
잘못된 JSON을 자동으로 고쳐 주나요?
아니요. 추측으로 고치면 데이터가 모르는 사이에 바뀔 수 있으므로, 문제가 있는 위치만 알려 주고 수정은 직접 하도록 했습니다.
스키마에 맞는지도 검사하나요?
아니요. 텍스트가 올바른 JSON 문법인지만 검사하며, 특정 키나 자료형이 있는지는 확인하지 않습니다.
함께 쓰기 좋은 도구가 있나요?
JSON을 스프레드시트에서 다루기 좋은 표로 바꾸려면 CSV ⇄ JSON 변환기를, 로그인 토큰 안의 JSON을 읽으려면 JWT 디코더를, Base64로 인코딩된 데이터에는 Base64 인코딩 / 디코딩을 쓰세요.