JSON 포맷터
JSON을 보기 좋게 정렬하거나 한 줄로 압축하고, 문법 오류는 몇 번째 줄·열인지 바로 표시해요. 트리 보기, 큰 정수 보존까지. 무료, 회원가입 없음, 업로드 없음.
- 오류 줄·열 표시
- 트리 펼치기/접기
- 큰 정수 그대로
- 원클릭 압축
올바른 JSON을 입력하면 펼치고 접을 수 있는 트리가 여기에 표시돼요.
데이터는 브라우저 안에서만 처리되며 업로드하거나 저장하지 않아요.
🔒 모든 계산은 브라우저 안에서 이뤄지며 데이터는 어떤 서버에도 업로드되지 않아요.
이럴 때 쓰면 좋아요
- API 디버깅: API가 돌려준 한 줄짜리 JSON을 읽기 쉽게 정렬하고 ‘트리 보기’로 필드를 찾아요.
- 설정 파일 수정: 쉼표나 따옴표가 빠진 설정 파일에서 오류가 몇 번째 줄, 몇 번째 열인지 바로 표시해요.
- 배포 전 압축: ‘압축’을 누르면 한 줄로 줄어 파일 크기를 줄이거나 코드에 붙여 넣기 편해요.
- 비교 전 정리: ‘키 정렬’을 체크해 두 JSON의 필드 순서를 맞춘 뒤 ‘텍스트 비교’ 도구로 비교해요.
사용 방법
- 왼쪽 입력란에 JSON을 붙여 넣거나 ‘파일 열기’로 .json 파일을 불러와요. 입력하는 동안 문법을 바로 검사하고 오른쪽 트리 보기도 함께 바뀌어요.
- 들여쓰기(공백 2칸, 4칸, 탭)를 고르고 ‘정렬’을 누르면 읽기 쉬운 여러 줄로, ‘압축’을 누르면 한 줄로 바뀌어요. ‘키 정렬’을 체크하면 모든 객체의 키가 순서대로 정렬돼요.
- 문법 오류가 있으면 몇 번째 줄, 몇 번째 열인지 표시해요. ‘오류 위치로’를 누르면 문제가 된 문자가 선택돼요. 다 되면 ‘복사’로 가져가세요.
사용 예시
마지막 쉼표: {, "name": "Pockez",, "tags": ["json", "tool"],, } 네 줄을 입력하면 ‘4번째 줄 1번째 열: 마지막 항목 뒤에 쉼표가 있어요’라고 표시돼요. 오류는 }를 읽은 위치를 가리키지만 지워야 할 것은 3번째 줄 끝의 쉼표예요.
큰 정수 보존: {"orderId":9007199254740993,"price":1.50}을 JavaScript의 JSON.parse로 읽으면 9007199254740992, 가격은 1.5가 돼요. 이 도구로 정렬하면 9007199254740993과 1.50이 그대로 남고 ‘안전 범위를 넘는 큰 정수 1개’라는 안내가 나와요.
키 정렬: {"name":"Alice","age":30,"tags":["a","b"]}를 ‘키 정렬’ 체크, 공백 2칸으로 정렬하면 키 순서가 age, name, tags가 되고 tags 배열 안의 a, b 순서는 그대로예요.
결과 해석
- ‘올바른 JSON이에요’는 데이터 전체가 JSON 표준(RFC 8259)을 따른다는 뜻이며, 어떤 프로그래밍 언어에서도 읽을 수 있어요.
- 오류의 줄과 열은 파서가 처음으로 이해하지 못한 위치예요. 실제로 고칠 곳은 보통 그 바로 앞이며, 예를 들어 쉼표가 빠지면 다음 키의 시작 위치가 표시돼요.
- 트리 보기에서 { 3 }은 필드가 3개인 객체, [ 2 ]는 요소가 2개인 배열이에요. 점선 밑줄이 있는 숫자는 큰 정수이며 마우스를 올리면 설명이 나와요.
- 큰 정수 안내는 데이터가 틀렸다는 뜻이 아니에요. 받는 쪽이 JavaScript처럼 배정밀도 부동소수점으로 읽으면 값이 달라지므로 문자열로 보내거나 BigInt로 처리하는 것을 권해요.
원리와 계산 방법
- RFC 8259와 ECMA-404 문법에 따라 한 글자씩 읽는 자체 파서를 사용하며, 첫 오류에서 멈추고 위치를 알려 줘요. 브라우저 내장 JSON.parse에 의존하지 않아 어느 브라우저에서나 오류 위치와 설명이 같아요.
- 정렬과 압축은 공백과 줄바꿈만 다시 배치해요. 문자열은 원래 이스케이프 표기를 유지하고(\u00e9는 \u00e9 그대로), 숫자도 원래 표기를 유지하며(1.50, 1e400 그대로), 객체 키의 원래 순서와 중복 키도 남아요.
- 키 정렬은 UTF-16 코드 단위 순서(JavaScript 기본 정렬과 같음)로 모든 객체를 재귀적으로 정렬해요. 같은 키는 원래 앞뒤 순서를 유지하고 배열 순서는 바꾸지 않아요.
- 절댓값이 2^53−1(9007199254740991)을 넘는 정수는 큰 정수로 표시해요. 소수점이나 지수가 있는 숫자는 해당하지 않아요.
한계와 주의점
- 표준 JSON만 받아요. 주석, 마지막 쉼표, 작은따옴표, NaN, undefined 같은 JSON5나 JavaScript 문법은 오류로 처리돼요.
- 한 번에 첫 번째 오류만 알려 줘요. 고치면 자동으로 다음 오류를 검사해요.
- 중첩이 1000단계를 넘으면 브라우저가 멈추지 않도록 분석을 중단하고 알려 줘요.
- 수십 MB의 큰 파일은 브라우저가 느려질 수 있어요. 트리는 처음 두 단계만 펼치며 ‘모두 펼치기’는 모든 노드를 만들기 때문에 큰 파일은 필요한 부분만 펼치세요.
자주 묻는 질문
왜 JSON 오류가 나나요?
가장 흔한 원인은 마지막 항목 뒤의 쉼표, 큰따옴표 대신 쓴 작은따옴표, 따옴표 없는 키, // 주석, undefined나 NaN 같은 값이에요. JavaScript에서는 되지만 표준 JSON에서는 허용되지 않아요. 오류 메시지에 위치와 이유가 나와요.
큰 숫자가 바뀌지는 않나요?
바뀌지 않아요. JavaScript의 JSON.parse를 쓰는 도구는 9007199254740991보다 큰 정수(예: 주문번호 9007199254740993)를 비슷한 값으로 바꿔 버려요. 이 도구는 원래 자릿수를 그대로 유지하고, 그런 큰 정수가 몇 개인지 알려 줘요.
정렬하면 데이터가 바뀌나요?
아니요. 정렬과 압축은 공백과 줄바꿈만 조정하고 문자열, 숫자 표기(예: 1.50), 키 순서는 그대로 둬요. ‘키 정렬’을 체크했을 때만 객체 키 순서가 바뀌며 배열 순서는 절대 바뀌지 않아요.
데이터가 업로드되나요?
아니요. 분석, 정렬, 트리 보기 모두 브라우저 안에서 처리되며 서버로 전송하거나 저장하지 않아요. 개인정보나 API 키가 담긴 설정 파일도 안심하고 다룰 수 있어요.
JSON에 주석을 쓸 수 있나요?
표준 JSON은 // 나 /* */ 주석을 지원하지 않아 오류로 판정돼요. 주석이 필요한 설정 파일은 보통 JSONC, JSON5, YAML 같은 형식을 써요.
JSON을 엑셀이나 CSV로 바꾸려면 어떻게 하나요?
이 사이트의 ‘CSV JSON 변환기’에서 ‘JSON → CSV’를 고르고 데이터를 붙여 넣은 뒤, 다운로드한 CSV를 엑셀로 열면 돼요(‘BOM 추가’를 켜 두어야 한글이 깨지지 않아요).
JSON과 JavaScript 객체는 무엇이 다른가요?
JSON은 순수 텍스트 데이터 형식이라 키를 반드시 큰따옴표로 감싸야 하고, 끝 쉼표를 쓸 수 없으며, 함수나 undefined를 넣을 수 없어요. JavaScript 객체 문법은 이보다 훨씬 느슨해요.
참고 자료
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format — IETF
- ECMA-404: The JSON data interchange syntax — Ecma International
- Number.MAX_SAFE_INTEGER — MDN Web Docs