MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

JSON 포매터

JSON을 붙여넣거나 파일로 열면 유효성을 검사하고, 들여쓰기를 바꾸거나 한 줄로 압축하거나 트리로 탐색할 수 있으며, 문법 오류는 정확한 줄과 열로 알려 줍니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제
들여쓰기

JSON 입력

1줄292byte올바른 JSON
정렬됨 · formatted.json
{
  "id": 4821,
  "status": "shipped",
  "customer": {
    "id": 77,
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "vip": true
  },
  "items": [
    {
      "sku": "KB-100",
      "name": "Keyboard",
      "qty": 1,
      "price": 49.9
    },
    {
      "sku": "MS-220",
      "name": "Mouse",
      "qty": 2,
      "price": 19
    }
  ],
  "total": 87.9,
  "shipped_at": "2026-03-14T09:30:00Z",
  "tracking": null
}
크기292byte
압축 후292byte
키19
객체4
배열1
깊이4
값22

JSON 포매터는 한 줄로 내려온 API 응답이나 손으로 고친 설정 파일을 읽기 좋은 모양으로 바꾸고, 올바른 JSON인지 바로 알려 줍니다. 이 도구는 JSON.parse 대신 자체 파서를 쓰기 때문에 결과가 입력의 충실한 재출력입니다. 키는 적은 순서 그대로 남고(자바스크립트 객체라면 앞으로 올라갈 "1" 같은 키도 마찬가지), 숫자는 원문 그대로라서 9007199254740993, 1.10, 1e2가 반올림되거나 다시 쓰이지 않습니다.

올바르지 않은 JSON이면 브라우저의 오류 문구를 그대로 보여 주지 않고 실수의 종류를 직접 알려 줍니다. 마지막 쉼표, 작은따옴표, 주석, 따옴표 없는 키, 잘못된 이스케이프, 문자열 안의 줄바꿈, 잘못된 숫자, 앞자리 0, undefined·NaN·Infinity, 닫히지 않은 문자열, 도중에 끝난 입력, 값 뒤에 남은 내용이 구분됩니다. 줄과 열, 문제 글자 아래의 캐럿(^)이 표시되고 오류 위치로 이동 버튼을 누르면 편집기 커서가 그 자리로 갑니다. JSON.parse가 조용히 하나로 합쳐 버리는 중복 키는 참고 메시지로 알려 줍니다.

결과는 정렬됨, 압축, 트리 세 탭으로 보며, 들여쓰기는 공백 2칸·4칸·탭 중에서 고를 수 있습니다. 크기, 압축 후 크기와 감소율, 키·객체·배열·깊이·값 개수도 함께 나옵니다. 모든 처리는 브라우저 탭 안에서 이루어지고 서버로 전송되지 않습니다. 최대 20MiB 파일을 붙여넣거나 끌어다 놓거나 열 수 있으며, 1,500단계보다 깊게 중첩된 문서는 처리하지 않습니다. 200,000자를 넘는 입력은 worker에서 처리합니다. 1,000,000자를 넘으면 입력 편집기 대신 크기와 줄 수 요약을 보여 줍니다. worker로 처리한 입력에서는 트리 보기를 사용할 수 없고, 편집기 대신 요약이 표시되면 입력 오류 위치로 이동할 수 없습니다.

사용 방법

  1. JSON을 붙여넣거나 파일 열기

    편집기에 텍스트를 붙여넣거나 파일을 끌어다 놓거나 파일 열기로 .json, .jsonl, .txt(최대 20MiB)를 엽니다. 예제 칩으로 API 응답, 중첩 배열, 엣지 케이스, 일부러 깨뜨린 문서를 불러올 수 있습니다. 입력이 비어 있으면 판정 없이 빈 결과가 표시됩니다.

  2. 판정 확인

    편집기 아래쪽에 올바른 JSON 또는 올바르지 않은 JSON이 표시됩니다. 오류라면 메시지를 읽고, 문제 위치 아래에 ^가 붙은 줄 미리보기를 확인한 뒤 오류 위치로 이동을 눌러 커서를 그 자리에 놓습니다.

  3. 보기와 들여쓰기 선택

    정렬됨, 압축, 트리 중에서 고르고 들여쓰기는 공백 2칸, 4칸, 탭 중에서 고릅니다. 트리 탭에서는 키를 누르면 그 JSONPath가 복사되고, 모두 펼치기와 모두 접기로 단계를 한꺼번에 열고 닫습니다.

  4. 요약과 참고 메시지 확인

    요약 줄에는 입력 크기, 압축 후 크기와 감소율, 키·객체·배열·깊이·값 개수가 나옵니다. 문서에 같은 키가 반복되면 결과 아래에 참고 메시지가 붙습니다.

  5. 복사, 다운로드, 이어서 작업

    정렬본이나 압축본을 복사하거나 내려받습니다(Ctrl 또는 ⌘ + Enter는 지금 보는 탭을 복사). 결과를 입력으로를 누르면 편집기 내용이 지금 보는 결과로 바뀌므로, 먼저 압축한 뒤 다시 들여쓰기를 적용하는 식으로 이어 갈 수 있습니다.

작동 원리

유효한 JSON의 조건과 오류 보고 방식

JSON은 RFC 8259와 ECMA-404로 정의됩니다. 문자열과 키는 큰따옴표를 쓰고, 리터럴은 true, false, null뿐이며, 주석, 마지막 쉼표, undefined, NaN, Infinity, 숫자의 앞자리 0은 허용되지 않습니다. 최상위 값은 어떤 JSON 값이든 될 수 있어서 true, 42, "text" 하나만 있어도 유효합니다.

파서는 첫 번째 실수에서 멈추고 1부터 센 위치 하나를 보고합니다. 마지막 쉼표는 쉼표 자체를, 닫히지 않은 문자열은 여는 따옴표를, 도중에 끝난 입력은 텍스트의 끝을 가리킵니다. 브라우저 내장 JSON.parse의 메시지가 아니므로 어느 브라우저에서나 문구가 같습니다.

실수예캐럿 위치(줄:열)
마지막 쉼표{"a":1,}1:7
작은따옴표{'a':1}1:2
따옴표 없는 키{a:1}1:2
숫자 앞자리 0{"a":01}1:7
NaN, undefined, Infinity{"a":NaN}1:6
닫히지 않은 문자열{"a":"abc1:6
도중에 끝난 입력{"a":[1,21:10
값 뒤에 남은 내용{"a":1} {"b":2}1:9

정렬해도 유지되는 것과 달라지는 것

텍스트를 트리로 만든 뒤 다시 출력하므로 실제로 바뀌는 것은 배치뿐입니다. 숫자 표기, 키 순서, 중복된 키의 양쪽이 모두 유지됩니다. 정규화되는 것은 문자열 내용의 표기 하나입니다. 문자열을 해석한 뒤 표준 이스케이프로 다시 쓰기 때문에 값은 같지만 \u00e9는 é로, \/는 /로 바뀝니다.

입력압축 결과일어난 일
1.101.10숫자 표기가 유지되어 끝의 0도 남음
1e21e2지수 표기를 풀지 않음
900719925474099390071992547409932^53을 넘는 정수도 반올림하지 않음
-0-0음의 0의 부호가 유지됨
{"b":1,"1":2}{"b":1,"1":2}정수형 키도 적은 자리에 그대로 있음
"caf\u00e9""café"이스케이프가 실제 글자로 바뀜
"a\/b""a/b"이스케이프된 슬래시가 일반 슬래시로 바뀜
{"x":1,"x":2}{"x":1,"x":2}두 키를 모두 남기고 참고 메시지를 표시

정렬본·압축본·트리와 요약 줄

정렬본은 선택한 들여쓰기로 값 하나당 한 줄을 쓰므로 버전 관리의 diff가 줄 단위로 읽힙니다. 압축본은 선택적인 공백과 줄바꿈을 모두 없애며, 요약 줄에서 원본 대비 크기와 감소율을 볼 수 있습니다. 결과가 길면 두 탭 모두 처음 2,500줄만 보여 주지만 복사와 다운로드에는 전체가 담깁니다.

트리 탭은 위쪽 두 단계만 펼친 채 시작하고 부모가 열릴 때만 자식을 그려서 큰 문서에서도 가볍습니다. 자식이 100개를 넘는 배열이나 객체는 100개씩 나눠 더 보기 버튼으로 이어서 보여 줍니다. 키를 누르면 $.store.book[0]이나 $["odd key"] 같은 JSONPath가 복사됩니다.

요약 줄의 깊이는 최상위 값을 1단계로 세므로 {"a":1}의 깊이는 2입니다. 키는 모든 단계의 키·값 쌍 개수(반복된 키도 매번 셈)이고, 값은 객체와 배열을 포함한 모든 값의 개수입니다.

실제 예시

배열이 있는 기본 객체
입력
{"user":{"id":42,"name":"Ari"},"active":true,"tags":["local","safe"]}
출력
{
  "user": {
    "id": 42,
    "name": "Ari"
  },
  "active": true,
  "tags": [
    "local",
    "safe"
  ]
}

요약 줄: 69바이트, 키 5개, 객체 2개, 배열 1개, 깊이 3, 값 8개. 입력이 이미 압축된 상태라 압축해도 줄어드는 크기는 없습니다.

숫자는 그대로
입력
{"id":12345678901234567890,"price":1.10,"n":1e2,"big":9007199254740993,"neg":-0}
출력
{
  "id": 12345678901234567890,
  "price": 1.10,
  "n": 1e2,
  "big": 9007199254740993,
  "neg": -0
}

반올림이나 재표기가 없습니다. 같은 텍스트를 브라우저의 JSON.parse로 읽으면 12345678901234567000, 1.1, 100, 9007199254740992, 0이 됩니다.

키 순서와 중복 키
입력
{"b":1,"2":"two","a":3,"1":"one","x":1,"x":2}
출력
{
  "b": 1,
  "2": "two",
  "a": 3,
  "1": "one",
  "x": 1,
  "x": 2
}

"2"와 "1"을 포함해 키가 적은 순서대로 남고 x 항목도 둘 다 유지됩니다. 중복 키 1개(x)가 있다는 참고 메시지가 함께 표시됩니다.

마지막 쉼표
입력
{"a":1,}
출력
1행 7열의 쉼표가 마지막 항목 뒤에 남아 있습니다. JSON은 } 또는 ] 앞의 쉼표를 허용하지 않습니다.

캐럿은 쉼표 자체인 1행 7열을 가리킵니다.

작은따옴표는 JSON이 아닙니다
입력
{'a':1}
출력
1행 2열에 작은따옴표가 있습니다. JSON의 문자열과 키는 큰따옴표만 씁니다.

작은따옴표를 큰따옴표로 바꾸세요. 자바스크립트 객체 리터럴이 곧바로 JSON이 되지는 않습니다.

JSON Lines 두 줄
입력
{"a":1}
{"b":2}
출력
2행 1열에서 JSON이 끝난 뒤 내용이 더 있습니다. 줄마다 값이 하나씩이라면 JSON Lines입니다.

두 번째 값은 남은 내용으로 취급되어 2행 1열에 보고되고 JSON Lines 안내가 붙습니다.

자주 하는 실수

  • 주석과 마지막 쉼표는 여전히 오류

    [1,2,]와 // 메모는 JSON5, JSONC(VS Code 설정), 자바스크립트에서는 허용되지만 여기서는 오류입니다. 보고된 위치의 주석이나 쉼표를 지우세요. 편집기에서 열리던 파일도 API에서는 거부될 수 있습니다.

  • 여기서 정확해도 다른 곳에서는 아닐 수 있음

    포매터는 9007199254740993을 적은 대로 출력하지만, 브라우저나 Node의 JSON.parse는 이 값을 9007199254740992로 읽습니다. 15~16자리를 넘는 ID는 문자열로 주고받거나 큰 정수를 지원하는 파서를 쓰세요.

  • 문자열 이스케이프는 표준형으로 바뀜

    "\u00e9"는 "é"로, "\/"는 "/"로 출력됩니다. 값은 같지만 원문과 바이트 단위로 비교하면 그 줄이 다르게 나옵니다.

  • 중복 키는 합치지 않고 그대로 둠

    {"a":1,"a":2}는 두 항목으로 남고 반복된 키가 참고 메시지에 나열됩니다. 어느 값이 이기는지는 소비하는 쪽마다 다르므로(자바스크립트는 마지막 값) 포매터에 기대지 말고 데이터를 고치세요.

  • JSONL 파일은 문서 하나가 아님

    줄마다 객체가 하나씩 있는 파일은 두 번째 줄 시작에서 값 뒤 내용이 남았다는 메시지(JSON Lines 안내 포함)가 나옵니다. JSONL 검증기로 검사하거나 줄들을 배열로 감싸세요.

자주 묻는 질문

JSON 포매터가 내 데이터를 서버로 업로드하나요?

아니요. 텍스트는 브라우저 탭 안에서 해석하고 출력하며 서버로 전송되지 않습니다. 탭을 닫으면 내용도 사라집니다.

얼마나 큰 파일까지 처리할 수 있나요?

입력 기준 최대 20MiB, 중첩은 최대 1,500단계까지입니다. 정렬됨·압축 탭은 긴 결과의 처음 2,500줄만 보여 주지만 복사와 다운로드에는 전체가 들어가며, 아주 큰 입력은 기기 메모리가 한계가 됩니다.

들여쓰기를 바꿀 수 있나요?

네. 공백 2칸, 4칸, 탭 중에서 고를 수 있습니다. 압축 탭에는 들여쓰기가 없습니다.

숫자를 반올림하거나 다시 쓰나요?

아니요. 숫자는 적은 그대로 복사되어 1.10, 1e2, -0, 2^53을 넘는 정수도 변하지 않습니다. 나중에 그 JSON을 실수로 파싱하는 프로그램에서만 정밀도를 잃을 수 있습니다.

키를 정렬하거나 순서를 바꾸나요?

아니요. "1" 같은 정수형 키를 포함해 적은 순서가 유지됩니다. 알파벳순으로 정렬하려면 JSON 키 정렬기를 쓰세요.

멀쩡해 보이는 자바스크립트 객체가 왜 오류가 나죠?

JSON은 자바스크립트보다 엄격합니다. 키에 큰따옴표가 있어야 하고, 작은따옴표 문자열, 마지막 쉼표, 주석, undefined, NaN은 쓸 수 없습니다. 오류 메시지가 그중 무엇인지 알려 줍니다.

요약 줄의 깊이, 키, 값은 무엇을 뜻하나요?

깊이는 최상위 값을 1단계로 센 단계 수, 키는 모든 단계의 키·값 쌍 개수, 값은 객체와 배열을 포함한 모든 값의 개수입니다.

빈 객체나 문자열 하나도 유효한 JSON인가요?

네. {}, [], null, 42, "text"는 RFC 8259에서 모두 유효한 문서입니다. 완전히 빈 입력은 문서가 아니므로 판정 없이 빈 결과가 표시됩니다.

마지막 업데이트: