JSON 포매터·검사기 소개
JSON은 API, 설정 파일, 로그에서 매일 쓰는 형식이며, 쉼표 하나가 빠지거나 따옴표 하나가 잘못 들어가도 프로그램은 문서 전체를 읽지 못합니다. 이 도구는 JSON을 엄격한 표준(RFC 8259)에 따라 검사해 첫 번째 문제가 정확히 어디에 있는지 알려 주고, 올바른 JSON을 깔끔하게 들여쓴 텍스트로 정리하거나 가장 작은 형태로 압축합니다.
많은 온라인 포매터는 텍스트를 JSON.parse와 JSON.stringify에 통과시키는데, 이 과정에서 큰 정수가 조용히 반올림되고, 1.10이 1.1로 줄고, 이스케이프 시퀀스가 바뀌고, 중복된 키 중 마지막 것만 남습니다. 이 도구는 자체 파서를 쓰므로 모든 숫자와 문자열을 입력한 그대로 다시 쓰고, 중복 키는 지우지 않고 알려 줍니다.
모든 처리는 브라우저 안에서 이루어집니다. 붙여넣은 텍스트와 연 파일은 사용자의 기기에서 처리되며 어디에도 업로드되지 않습니다.
사용 방법
- JSON 입력 상자에 JSON을 붙여넣으세요. "예시 불러오기"로 도구를 먼저 써 보거나, "파일 열기"로 20 MB 이하의 .json 또는 .txt 파일을 불러올 수도 있습니다.
- 상태 메시지를 확인하세요. 올바르면 "올바른 JSON"과 내용 요약이, 아니면 "올바르지 않은 JSON"과 함께 줄, 열, 문제 지점을 가리키는 발췌가 표시됩니다. "오류 위치로 이동"을 클릭하면 입력에서 그 위치가 선택됩니다.
- "들여쓰기"(공백 2칸, 공백 4칸, 탭)를 고르고, 객체의 키를 알파벳순으로 정렬하려면 "키 정렬(A–Z)"을 체크하세요.
- 들여쓴 결과를 보려면 "정리"를, 불필요한 공백을 모두 없애려면 "압축"을 클릭하세요. 입력이 1 MB보다 작으면 입력이나 옵션을 바꿀 때마다 결과가 자동으로 바뀝니다.
- "결과 복사"나 ".json 다운로드"로 결과를 가져가세요.
- 1 MB보다 큰 입력은 페이지가 느려지지 않도록 입력하는 동안 검사하지 않습니다. "검사", "정리", "압축" 중 하나를 클릭하세요.
기능
- 바로 고칠 수 있는 오류 메시지: 첫 번째 문법 오류를 줄, 열, 문자 위치와 함께 보여 주고, 캐럿(^)으로 위치를 가리키는 코드 발췌도 표시합니다. 끝에 남은 쉼표, 작은따옴표, 주석, 따옴표 없는 키, NaN, 앞에 붙은 0, 문자열 안의 이스케이프하지 않은 줄바꿈처럼 흔한 실수는 따로 자세히 설명합니다.
- 값을 바꾸지 않는 정리: 숫자는 모든 자릿수를 유지하고(12345678901234567890은 정확히 그대로, 1.10은 끝의 0까지 그대로) 문자열은 이스케이프 시퀀스를 유지하므로, 정리해도 문서의 의미가 바뀌지 않습니다.
- 중복 키 감지: 같은 객체 안에 두 번 나온 키를 위치와 함께 목록으로 보여 줍니다. 두 항목은 모두 결과에 남으므로 모르는 사이에 사라지는 값이 없습니다.
- 정리, 압축, 정렬: 공백 2칸, 공백 4칸, 탭으로 들여쓰거나 압축합니다. 정렬은 모든 단계의 객체 키에 적용되며, 배열은 원래 순서를 유지합니다.
- 문서 통계: 바이트 단위 크기, 중첩 깊이, 키와 값의 수, 그리고 객체, 배열, 문자열, 숫자, 불리언, null이 각각 몇 개인지 보여 줍니다.
사용 예
API 요청 본문에서 끝에 남은 쉼표 찾기
{"name": "Ada", "tags": ["math", "poetry",]}를 붙여넣으면 1줄 42열에 "JSON에서는 마지막 항목 뒤에 쉼표를 둘 수 없습니다"라는 오류가 표시되고, 캐럿이 불필요한 쉼표를 가리킵니다. 쉼표를 지우면 상태가 "올바른 JSON"으로 바뀝니다.
큰 ID를 그대로 유지하기
JavaScript의 JSON.parse는 {"id": 9007199254740993}을 9007199254740992로 바꿉니다. 이 도구로 정리하면 9007199254740993이 그대로 남고, 많은 파서가 정확히 표현할 수 있는 범위를 넘는 숫자라는 참고 사항이 추가됩니다.
두 설정 파일 비교하기
두 파일을 "키 정렬(A–Z)"과 같은 들여쓰기로 정리한 뒤 텍스트 비교 도구로 비교하세요. 키 순서와 공백 차이가 사라지므로 실제로 바뀐 내용만 남습니다.
요청 본문 줄이기
보기 좋게 들여쓴 JSON에서 "압축"을 클릭하면 들여쓰기와 줄바꿈이 사라집니다. "변화" 항목에서 입력보다 몇 바이트 줄었는지 확인할 수 있습니다.
제한 사항과 참고
- 엄격한 JSON만 받아들입니다. 주석, 끝에 남은 쉼표, 작은따옴표 문자열, NaN, Infinity 같은 JSON5나 JSONC의 확장 문법은 오류로 표시하며, 자동으로 고치지는 않습니다.
- 첫 번째 문법 오류만 알려 줍니다. 그 오류를 고치면 다음 오류가 있을 경우 그 오류가 표시됩니다.
- 객체와 배열의 중첩은 10,000단계까지, 결과는 2억 자까지 다룰 수 있습니다.
- 파일은 UTF-8로 인코딩되어 있어야 하며 20 MB 이하여야 합니다. 1 MB가 넘는 입력은 버튼을 눌렀을 때만 검사하고, 아주 큰 결과는 상자에 미리보기로만 표시합니다. "결과 복사"와 ".json 다운로드"에는 항상 전체 결과가 쓰입니다.
- "키 정렬(A–Z)"은 JavaScript의 기본 정렬과 같이 UTF-16 코드 단위로 키를 비교합니다. 대문자가 소문자보다 앞에 오며, 언어별 정렬 규칙은 따르지 않습니다.
- 열 번호는 UTF-16 코드 단위로 세므로, 많은 코드 편집기처럼 이모지나 기본 다국어 평면(BMP) 밖의 문자는 두 열로 셉니다.
자주 묻는 질문
왜 실제 실수가 있는 줄의 다음 줄에서 오류가 나나요?
파서는 텍스트가 더 이상 올바른 JSON일 수 없게 되는 첫 지점을 알려 줍니다. 예를 들어 쉼표가 빠진 것은 다음 값이 시작될 때에야 알 수 있고, 닫는 괄호가 빠진 것은 입력이 끝날 때 알 수 있습니다. 메시지에 무엇이 와야 했는지가 나오므로 대개 실제 원인을 짐작할 수 있습니다.
정리하면 숫자나 문자열이 바뀌나요?
아닙니다. 입력한 모든 숫자와 문자열의 원래 텍스트를 그대로 유지하므로 큰 정수, 끝의 0, 1E+2 같은 지수, \u00e9 같은 이스케이프 시퀀스가 입력한 그대로 나옵니다. 바뀌는 것은 공백뿐이며, "키 정렬(A–Z)"을 고르면 키 순서도 바뀝니다.
JSON에서 중복 키를 써도 되나요?
JSON 표준은 객체 안의 이름이 고유해야 한다고 권하지만 중복을 금지하지는 않으며, 파서마다 처리 방식이 다릅니다. 대부분은 마지막 값만 남깁니다. 이 도구는 중복 키를 받아들이되 정확한 위치와 함께 경고하고, 정리한 결과에 모든 항목을 남깁니다.
주석이 있는 JSON(JSONC)이나 JSON5도 읽을 수 있나요?
아닙니다. 이 형식들은 일부 편집기와 도구에서 쓰는 확장이며 올바른 JSON이 아닙니다. 도구가 주석, 끝에 남은 쉼표, 작은따옴표의 위치를 알려 주므로 지우면 됩니다.
JSON이 서버로 업로드되나요?
아닙니다. 파싱과 정리는 이 페이지의 JavaScript에서 실행되며, 파일은 기기에서 바로 읽습니다. 붙여넣거나 연 내용은 네트워크로 전송되지 않습니다.