API 응답, 설정 파일, 데이터베이스 덤프 — JSON은 어디서든 마주칩니다. 문제는 압축된 JSON은 거의 읽을 수 없다는 것입니다. 이 글에서는 JSON 포맷팅이 왜 필요한지, 어떻게 빠르게 처리하는지 정리합니다.

JSON 포맷팅이란?

포맷팅(또는 “pretty-print”)은 들여쓰기와 줄바꿈을 추가해 구조를 눈에 띄게 만드는 작업입니다.

포맷팅 전:

{"name":"Alice","age":30,"skills":["js","python"]}

포맷팅 후:

{
  "name": "Alice",
  "age": 30,
  "skills": [
    "js",
    "python"
  ]
}

데이터는 동일하지만 가독성은 완전히 달라집니다.

JSON 문법 핵심 규칙

포맷팅 전에 JSON이 유효한지 확인해야 합니다. 핵심 규칙은 다음과 같습니다.

  • 문자열은 반드시 큰따옴표 사용 — "key", 'key'는 유효하지 않음
  • 는 반드시 문자열(따옴표 포함)이어야 함
  • 후행 쉼표 불허 — [1, 2, 3,]은 유효하지 않음
  • 주석 불허 — 표준 JSON에는 주석이 없음
  • 값의 종류 — 문자열, 숫자, 객체, 배열, true, false, null만 허용

자주 발생하는 JSON 오류

오류 유형예시해결책
후행 쉼표{"a":1,}쉼표 제거
작은따옴표{'a':'b'}큰따옴표로 변경
따옴표 없는 키{a: 1}키에 따옴표 추가
undefined 값{"x": undefined}null로 대체
주석 포함// comment제거 (JSON 비표준)

온라인 JSON 포맷터 사용하기

JSON을 가장 빠르게 포맷팅하는 방법은 브라우저 기반 도구를 쓰는 것입니다. 설치 없이, IDE 없이 바로 사용할 수 있습니다.

ZeroTool JSON 포맷터 →

입력하는 즉시 포맷팅하고, 문법 오류를 인라인으로 표시하며, 버튼 하나로 결과를 복사할 수 있습니다.

좋은 JSON 포맷터의 조건

  1. 실시간 검증 — 입력하면서 오류를 즉시 확인
  2. 구문 강조 — 중첩 구조를 한눈에 파악
  3. 명확한 오류 메시지 — 파싱 실패 위치를 정확히 안내
  4. 복사 버튼 — 한 번의 클릭으로 클립보드 복사

코드에서 JSON 포맷팅하기

JavaScript / Node.js

const ugly = '{"name":"Alice","age":30}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);

JSON.stringify(value, replacer, space) — 세 번째 인자가 들여쓰기 너비입니다.

Python

import json

ugly = '{"name": "Alice", "age": 30}'
pretty = json.dumps(json.loads(ugly), indent=2)
print(pretty)

커맨드라인 (jq)

echo '{"name":"Alice"}' | jq .
# 파일 포맷팅:
cat data.json | jq .

jq는 JSON 처리의 표준 Unix 도구입니다. brew install jq 또는 apt install jq로 설치하세요.

JSON 압축(Minify)

포맷팅의 반대 과정입니다. 모든 공백을 제거해 파일 크기를 줄이며, 네트워크 전송 전에 유용합니다.

// JavaScript
const minified = JSON.stringify(JSON.parse(pretty));

ZeroTool JSON 포맷터에서도 압축을 지원합니다. 포맷팅된 JSON을 붙여넣고 Minify 버튼을 누르면 됩니다.

JSON Schema 검증

포맷팅은 문법만 확인합니다. 데이터의 구조(필수 필드, 타입, 패턴)를 검증하려면 JSON Schema를 사용하세요.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["name", "age"],
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

Node.js에서는 ajv, Python에서는 jsonschema로 프로그래밍 방식으로 검증할 수 있습니다.

대용량 JSON 처리 팁

  • 섹션 접기 — 좋은 포맷터는 객체/배열 노드를 접을 수 있어야 함
  • 키로 검색 — 스크롤보다 빠른 탐색
  • 배열 페이지네이션 — 수천 개 항목은 보이는 것만 렌더링
  • 스트리밍 파서 — 50MB 이상 파일은 oboe.js(Node.js)나 Python의 ijson 사용

요약

작업도구
빠른 포맷팅 / 검증ZeroTool JSON 포맷터
CLI 포맷팅jq .
JavaScriptJSON.stringify(obj, null, 2)
Pythonjson.dumps(obj, indent=2)
스키마 검증ajv, jsonschema

깔끔하게 정렬된 JSON은 디버깅 속도를 높이고, diff 리뷰를 쉽게 만들며, 숨겨진 오류를 줄입니다. 포맷터를 습관적으로 사용하세요.

ZeroTool JSON 포맷터로 바로 시작하기 →