JSON 포맷터 · 미니파이어 · 검증기
JSON을 아래에 붙여 넣으면 포맷, 압축, 검증을 할 수 있어요.
- 위 입력창에 JSON을 붙여 넣거나 직접 입력하세요.
- "포맷" 버튼을 누르면 들여쓰기가 적용된 모양으로 정돈돼요.
- "압축"을 누르면 공백이 모두 제거되고, "검증"을 누르면 문법 오류 여부를 확인할 수 있어요.
- 원하는 결과가 나오면 복사하거나 다운로드하세요.
어떤 도구인가요?
"포맷"은 JSON에 일관된 들여쓰기(공백 2칸, 4칸, 또는 탭 중 선택)를 적용해서 읽기 좋게 다듬어 줘요. "압축"은 불필요한 문자를 모두 없애 최대한 작게 만들어서, URL에 JSON을 담거나 데이터베이스 한 칼럼에 저장하거나 API 페이로드 크기를 줄일 때 유용해요. "검증"은 입력이 JSON 명세를 따르는지 확인하고, 문법 오류가 있다면 정확한 줄과 열을 알려 줍니다.
예시
압축된 입력:
{"name":"Ada","skills":["math","logic"],"active":true} 공백 2칸으로 포맷한 결과:
{
"name": "Ada",
"skills": ["math", "logic"],
"active": true
} 자주 발생하는 JSON 오류와 해결법
"Invalid JSON" 오류의 대부분은 이 몇 가지 원인에서 나와요. 검증기가 문제 있는 줄과 열을 짚어 주니, 무엇을 찾아야 할지 알면 원인이 바로 보여요.
- 끝에 붙은 쉼표. {"a": 1, "b": 2,} 는 올바르지 않아요. JSON에서는 객체나 배열의 마지막 항목 뒤에 쉼표를 쓸 수 없습니다.
- 작은따옴표. {'a': 1} 는 올바르지 않아요. JSON의 문자열과 키는 반드시 큰따옴표로 감싸야 합니다.
- 따옴표 없는 키. {a: 1} 은 올바르지 않아요 — JavaScript 객체 리터럴에서는 허용되지만 JSON에서는 허용되지 않습니다.
- 쉼표 누락. {"a": 1 "b": 2} 는 올바르지 않아요. 모든 형제 요소 사이에는 쉼표가 필요합니다.
- 주석. // 또는 /* ... */ 같은 주석은 엄격 JSON(RFC 8259)에서 허용되지 않아요. 주석을 지우거나 JSONC 파서를 사용하세요.
- 스마트 따옴표. 워드 같은 편집기에서 복사해 붙이면 " 가 둥근 따옴표로 바뀌어 있을 때가 있어요 — JSON은 이를 거부합니다. 따옴표를 다시 입력하거나, 일반 텍스트 편집기를 거쳐 붙여 넣으세요.
자주 묻는 질문
제 JSON이 멀쩡해 보이는데 왜 유효하지 않다고 나오나요?
"유효하지 않다"는 오류의 대부분은 네 가지 중 하나예요: 배열이나 객체의 마지막 뒤에 쉼표가 붙은 경우, 큰따옴표 대신 작은따옴표를 쓴 경우, 키에 따옴표가 없는 경우, 항목 사이에 쉼표가 빠진 경우입니다. 검증기가 문제 있는 줄과 열을 정확히 짚어 주므로 그곳으로 바로 이동해 수정할 수 있어요.
"포맷"과 "압축"은 뭐가 다른가요?
"포맷"은 들여쓰기와 줄바꿈을 넣어서 읽기 쉽게 재구성합니다. "압축"은 공백을 모두 제거해 최대한 작게 만들어 주는데, URL에 JSON을 담거나 네트워크 페이로드 크기를 줄일 때 유용해요. 두 결과는 의미상 완전히 같은 JSON이고, 공백만 다를 뿐입니다.
아주 큰 JSON 파일도 처리할 수 있나요?
네, 브라우저가 감당하는 범위 안에서는 가능해요. 최신 브라우저는 수십 MB의 JSON도 무리 없이 파싱합니다. 병목은 보통 파싱이 아니라 텍스트 영역에 결과를 그리는 단계예요. 50 MB를 넘으면 포맷 도중 탭이 잠깐 멈출 수 있습니다.
주석이 포함된 JSON(JSONC, JSON5)도 지원하나요?
아니요. 이 도구는 엄격 JSON 명세(RFC 8259)를 따르기 때문에 주석, 마지막 쉼표, 작은따옴표 문자열을 허용하지 않아요. JSONC나 JSON5 입력이라면 비표준 문법을 먼저 제거하거나, 해당 방언에 맞는 파서를 사용하세요.
포맷하면 키 순서가 바뀌나요?
아니요. 결과는 입력과 같은 키 순서를 유지합니다. JavaScript는 문자열 키에 대해 반복 순서를 보장하며, 이 도구는 포맷 과정에서 정렬하거나 순서를 바꾸지 않아요.
여기에 붙여 넣은 JSON을 저장하나요?
아니요. 입력창에 붙여 넣는 JSON은 저희 쪽에 저장되지 않습니다. 포맷/압축/검증 어느 기능을 쓰든 페이지를 닫거나 새로고침하는 순간 모두 사라져요 — 로그도, 페이로드에 대한 기록도 남지 않아요. 확인하고 싶다면 브라우저 개발자 도구에서 직접 살펴보셔도 됩니다.