JSON 포맷터

JSON을 포맷하거나 압축하고, 잘못된 입력이 어디서 깨졌는지 정확히 확인할 수 있습니다.

들여쓰기
입력
출력

결과가 여기에 표시됩니다

이 JSON 포맷터가 하는 일

JSON(JavaScript Object Notation)은 프로그램 사이에 구조화된 데이터를 주고받는 가장 흔한 형식입니다 — API 응답, 설정 파일, 로그 줄 등입니다. 간결하게 설계되어, 그 탓에 객체가 몇 단계 중첩되거나 한 줄로 도착하면 읽기 어려워집니다. 이 도구는 붙여넣은 JSON을 두 가지로 다시 씁니다: 일관된 들여쓰기로 구조가 한눈에 보이는 정리본, 또는 선택적 공백을 모두 없애 회선으로 보내기에 가장 작은 압축본입니다.

정리하면서 검증도 합니다. 다시 직렬화하기 전에 텍스트를 파싱하므로 잘못된 JSON이 오해를 부르는 출력을 내는 일이 없습니다 — 대신 파싱이 실패한 정확한 줄과 열이 나와 문제 지점으로 바로 갈 수 있습니다.

정리와 압축 — 각각 언제 쓰나

두 모드는 정반대의 목적을 지니며, 대부분의 작업은 단계에 따라 둘 다 씁니다:

  • 읽거나 디버깅할 때는 정리 — API 응답을 살피거나, 두 페이로드를 비교하거나, 풀 리퀘스트에서 설정 파일을 검토하는 경우입니다. 들여쓰기가 글자의 벽을 훑어볼 수 있는 트리로 바꿉니다.
  • 내보낼 때는 압축 — JSON을 HTML에 심거나, 쿠키나 캐시에 저장하거나, 1바이트가 아쉬운 요청 본문에 싣는 경우입니다. 압축된 JSON은 공백만 뺀 바이트 단위로 동등한 데이터입니다.

들여쓰기 선택(공백 2칸, 4칸, 탭)은 정리 출력에만 영향을 줍니다. 공백 2칸이 JavaScript와 웹 도구에서 가장 흔한 관례이고, 공백 4칸이나 탭은 그것을 선호하는 팀에 맞습니다. 무엇을 고르든 결과는 여전히 유효한 JSON입니다 — 들여쓰기는 순전히 겉모습일 뿐입니다.

검증 오류 읽기

JSON이 잘못됐을 때 이 도구는 모호한 "잘못됨" 메시지가 아니라 첫 문제의 줄과 열을 알립니다. 엔진의 오류 메시지는 브라우저마다 다르고 위치를 빼는 경우가 많아, 위치는 따로 계산되어 살펴보기 시작하기 알맞은 지점을 가리킵니다. 첫 오류를 고치고 다시 확인하세요 — 떠도는 문자 하나가 여러 겉보기 문제로 번지는 경우가 흔합니다.

흔한 JSON 실수

JSON은 닮은 JavaScript 객체 리터럴보다 엄격합니다. 사람이 가장 자주 걸리는 실수는 다음과 같습니다:

  • 끝의 쉼표: 객체나 배열의 마지막 항목 뒤의 쉼표는 JavaScript에서는 유효하지만 JSON에서는 무효입니다.
  • 작은따옴표: JSON의 문자열과 키는 큰따옴표를 써야 합니다. 'value'는 무효이고 "value"가 옳습니다.
  • 따옴표 없는 키: 모든 객체 키는 따옴표 붙은 문자열이어야 하므로 { name: "x" }는 { "name": "x" }가 되어야 합니다.
  • 주석: JSON에는 주석 구문이 없습니다. //와 /* */는 파싱 오류를 냅니다.
  • 특별한 숫자: NaN, Infinity, -Infinity는 유효한 JSON 숫자가 아닙니다.
  • 잘못된 따옴표: 워드프로세서에서 붙여넣은 "스마트 따옴표"는 따옴표처럼 보이지만 다른 문자라 파싱되지 않습니다.

자주 묻는 질문

제 JSON이 서버로 전송되나요?
아니요. 파싱, 검증, 정리가 모두 JavaScript로 브라우저 안에서 이루어집니다. 붙여넣은 내용이 업로드·저장·기록되는 일이 없어 민감한 페이로드에도 안전합니다.
정리하면 데이터가 바뀌나요?
아니요. 정리와 압축은 토큰 사이의 공백을 더하거나 뺄 뿐입니다. 키, 값, 숫자, 구조는 그대로이고 배치만 바뀝니다.
숫자가 재배열되거나 다시 쓰이는 이유는 무엇인가요?
이 도구는 JSON을 실제 값으로 파싱해 다시 직렬화하므로 숫자가 정규형으로 정돈됩니다(예: 1e3은 1000이 됩니다). 값은 그대로이고 그 텍스트 표현만 표준이 됩니다.
아주 큰 JSON 파일도 다룰 수 있나요?
큰 페이로드도 다룰 수 있지만, 모두 브라우저 안에서 도는 탓에 극단적으로 큰 파일(수십 메가바이트)은 기기에 따라 느려지거나 메모리 한계에 닿을 수 있습니다.
객체 키의 순서는 유지되나요?
네. 키 순서는 입력에 나온 그대로 정확히 유지됩니다 — 이 도구는 키를 정렬하지 않습니다.
JSON과 JavaScript 객체의 차이는 무엇인가요?
JSON은 데이터 교환을 위한 텍스트 형식이고, JavaScript 객체는 메모리 안의 값입니다. JSON이 더 엄격합니다: 큰따옴표 붙은 키와 문자열을 요구하고, 끝의 쉼표와 주석을 금하며, 정해진 종류의 값(문자열, 숫자, 불리언, null, 배열, 객체)만 허용합니다.
JSON5나 JSONC(주석 있는 JSON)를 정리할 수 있나요?
아니요. 이 도구는 엄격한 표준 JSON을 검증합니다. JSON5와 JSONC는 주석 등 편의 기능을 더한 것으로 JSON 사양의 일부가 아니라 오류로 보고됩니다.