본문으로 건너뛰기

JSON 포맷터 & 검증기

JSON을 붙여넣고 2, 4 또는 8칸 들여쓰기로 정렬하거나, 한 줄로 압축하거나, 구문이 맞는지만 확인하세요. 유효한 JSON은 색으로 구분되어 변환 전후의 크기와 함께 표시되고, 잘못된 JSON은 브라우저가 낸 오류 메시지와 함께 표시됩니다. 무료이며 회원가입이 필요 없고, 붙여넣은 내용은 브라우저 밖으로 나가지 않습니다.

0줄 · 0바이트

JSON 포맷터 사용 방법

  1. 1. JSON을 붙여넣으세요. 값 하나부터 큰 API 응답까지 무엇이든 가능합니다. 입력 상자는 입력하는 동안 줄 수와 바이트 수를 셉니다.
  2. 2. 들여쓰기를 고르세요. 2, 4 또는 8칸 중에서 고르세요. 이 설정은 정렬에만 적용됩니다.
  3. 3. 작업을 고르세요. 정렬은 보기 좋게 들여쓰고, 압축은 선택 사항인 공백과 줄바꿈을 모두 제거하며, 검증만은 구문을 확인해 초록색 또는 빨간색 판정을 보여 주고 결과물은 만들지 않습니다.
  4. 4. 결과를 읽으세요. 유효한 JSON은 색으로 구분되어 표시됩니다(키는 보라색, 문자열은 초록색, 숫자는 파란색, true와 false는 주황색, null은 빨간색). 입력 크기, 출력 크기, 변화율도 함께 나옵니다. 잘못된 JSON은 대신 구문 분석기의 메시지를 보여 줍니다. 출력 복사는 보이는 내용을 복사합니다.

유효한 JSON의 기준

이 도구는 입력한 텍스트를 JavaScript 엔진의 엄격한 JSON 파서에 넘기므로, 형식의 표준인 RFC 8259(ECMA-404와 같은 문법)이 허용하는 것만 받아들이고 그 이상은 받지 않습니다. 이는 JavaScript 객체 리터럴보다 엄격하므로, 스크립트에서는 잘 동작하던 코드가 여기서 실패하는 경우가 많습니다. 흔한 원인은 다음과 같습니다:

JSON 구문 분석이 실패하는 흔한 이유
실수예시해결 방법
끝 쉼표{"a": 1,}마지막 쉼표를 삭제하세요.
작은따옴표{'a': 1}모든 키와 문자열에 큰따옴표를 쓰세요.
따옴표 없는 키{a: 1}따옴표를 붙이세요: {"a": 1}.
주석// note 또는 /* note */JSON에는 주석이 없으므로 삭제하세요.
앞자리 0 또는 플러스 기호007, +57과 5로 쓰세요.
NaN, Infinity 또는 undefined{"x": NaN}JSON에는 존재하지 않으므로 null이나 문자열을 사용하세요.
문자열 안의 실제 줄바꿈따옴표 안의 줄바꿈두 글자 \n으로 쓰세요.
쉼표 누락{"a": 1 "b": 2}멤버 사이를 쉼표로 구분하세요.

단독 42, "text" 또는 null도 유효합니다. RFC 7159 이후 JSON 텍스트는 객체나 배열뿐 아니라 어떤 값이든 될 수 있습니다. 대문자로 쓴 True나 NULL은 유효하지 않습니다. 세 리터럴은 모두 소문자입니다.

정렬이 바꾸는 것

이 도구는 JSON을 구문 분석한 뒤 다시 씁니다. 따라서 결과는 텍스트를 한 글자씩 복사한 것이 아니라 같은 데이터를 새 레이아웃으로 쓴 것입니다. 달라질 수 있는 것은 네 가지이며, 앞의 두 가지는 JSON을 다른 시스템에 넘기는 경우 중요합니다:

  • 큰 정수는 정밀도를 잃습니다. JavaScript 숫자는 64비트 부동소수점이므로, 9,007,199,254,740,991(253 − 1)을 넘는 정수는 반올림됩니다. 9007199254740993은 9007199254740992로 바뀌어 나옵니다. ID가 그렇게 크다면 문자열로 보관하세요.
  • 중복된 키는 하나로 합쳐집니다. RFC 8259는 이름이 고유해야 한다고 권하지만 중복을 금지하지는 않습니다. 이 도구는 마지막 값을 남기고 앞의 값은 버립니다.
  • 정수 형태의 키가 앞으로 옵니다. JavaScript에서 "1"이나 "2" 같은 키는 다른 키보다 앞에 오름차순으로 나열됩니다. 따라서 {"b":1,"2":1,"1":1}은 {"1":1,"2":1,"b":1}로 다시 쓰입니다. 다른 키는 원래 순서를 유지합니다.
  • 숫자와 이스케이프는 다시 쓰입니다. 1.50은 1.5가, 1e2는 100이, \u00e9는 é가 됩니다.

실제 예시

119바이트 입력을 예로 들겠습니다. 큰 ID, 끝의 0, 지수 표기, 이스케이프가 모두 들어 있습니다:

입력

{"title":"APA Manual","year":2020,"tags":["style","7th"],"id":9007199254740993,"price":1.50,"x":1e2,"name":"caf\u00e9"}

2칸 들여쓰기로 정렬하면 156바이트(+31%)가 되며, 멤버마다 한 줄씩 나오고 "id": 9007199254740992, "price": 1.5, "x": 100, "name": "café"로 바뀝니다. 압축하면 한 줄로 114바이트(-4%)가 되며 변화는 같습니다. 데이터의 다른 부분은 달라지지 않습니다. 크기는 UTF-8 바이트로 세므로 é는 두 바이트로 계산됩니다.

어떤 도구가 필요한가요?

이 페이지는 JSON 자체를 위한 도구입니다. 데이터가 다른 형식이라면 관련 도구가 도움이 됩니다. 스프레드시트는 CSV to JSON으로, 계획 중인 YAML to JSON Converter와 XML to JSON Converter로, XML 문서는 XML 포맷터로, 마크업은 HTML Formatter로 처리하세요.

자주 묻는 질문

JSON 포맷터는 무엇을 하나요?
JSON을 구문 분석한 뒤 일관된 들여쓰기와 멤버마다 한 줄로 다시 써서, 압축된 API 응답도 읽기 쉽게 만듭니다. 먼저 구문 분석을 해야 하므로 검증기 역할도 합니다. 유효하지 않은 텍스트는 결과 대신 오류를 냅니다.
JSON이 잘못되었다고 나오는 이유는 무엇인가요?
보통 위 표의 실수 중 하나입니다. 끝 쉼표, 작은따옴표, 따옴표 없는 키, 주석, 쉼표 누락 등이죠. 메시지는 브라우저의 JSON 구문 분석기에서 나오므로 Chrome, Firefox, Safari마다 문구가 다르며, 위치를 알려줄 수도 있고 그렇지 않을 수도 있습니다. 메시지가 가리키는 지점이나 그 바로 앞에서 문제를 찾아보세요.
주석, JSON5 또는 JSONC가 있는 JSON도 정렬할 수 있나요?
아니요. 주석, 끝 쉼표, 작은따옴표는 JSON에 포함되지 않으며, 이 도구는 엄격한 구문 분석기를 씁니다. 먼저 이것들을 제거하거나 편집기에서 일반 JSON으로 변환하세요.
정렬, 압축, 검증만의 차이는 무엇인가요?
정렬은 들여쓰기와 줄바꿈을 추가하고, 압축은 선택 사항인 공백을 모두 제거해 가장 작은 텍스트를 만들며, 검증만은 구문만 확인해 결과물 없이 판정을 보여 줍니다. 세 가지 모두 같은 구문 분석기를 쓰므로 하나를 통과한 문서는 모두 통과합니다.
JSON의 숫자가 왜 바뀌었나요?
이 도구는 숫자를 JavaScript 부동소수점으로 읽고 JavaScript의 가장 짧은 형식으로 다시 씁니다. 그래서 1.50은 1.5가, 1e2는 100이 되며, 253 − 1보다 큰 정수는 반올림됩니다. 정확히 보존되어야 한다면 아주 큰 식별자는 문자열로 저장하세요.
제 JSON이 어딘가에 업로드되나요?
아니요. 구문 분석, 정렬, 구문 강조는 모두 브라우저에서 실행되며, 붙여넣은 텍스트는 CitationEasy나 다른 누구에게도 전송되지 않습니다. 공용 컴퓨터에서 작업을 마치면 입력 상자를 비우세요.
키를 정렬하거나 들여쓰기에 탭을 쓸 수 있나요?
여기서는 할 수 없습니다. 들여쓰기는 2, 4 또는 8칸 공백만 선택할 수 있으며, 키는 위에서 설명한 대로 정수 형태의 키가 앞으로 오는 것을 제외하면 입력의 순서를 유지합니다.

관련 도구

데이터·마크업·코드의 다른 도구