JSON 압축
무료 온라인 JSON 압축 도구. JSON 한 줄 컴팩트 압축, JSON Escape/Unescape를 지원하며, 스마트 구문 복구를 내장하여 후행 쉼표 등 일반적인 오류를 자동 처리합니다. 실시간 압축률 표시, CodeMirror 에디터에 단축키 지원, 순수 프론트엔드 처리.
무료 온라인 JSON 압축 도구. JSON 한 줄 컴팩트 압축, JSON Escape/Unescape를 지원하며, 스마트 구문 복구를 내장하여 후행 쉼표 등 일반적인 오류를 자동 처리합니다. 실시간 압축률 표시, CodeMirror 에디터에 단축키 지원, 순수 프론트엔드 처리.
JSON 포맷(Beautify/Pretty Print)은 키와 값 사이에 들여쓰기, 줄 바꿈, 공백을 추가하여 사람이 읽기 쉽게 만드는 것으로 개발 및 디버깅에 적합합니다. JSON 압축(Minify)은 불필요한 공백 문자(공백, 줄 바꿈, 탭, 들여쓰기)를 모두 제거하여 여러 줄 JSON을 한 줄 컴팩트 형식으로 변환하며, 크기를 줄이고 전송 효율을 높이는 것을 목적으로 하여 프로덕션 환경 API 전송, 설정 파일 경량화, 코드 문자열 삽입에 적합합니다. 둘은 상보적인 작업입니다 — 개발 시에는 포맷 버전을 보고, 배포 시에는 압축 버전을 사용합니다.
JSON 이스케이프는 JSON 문자열 내 특수 문자에 백슬래시 이스케이프를 추가하는 것입니다(주로 큰따옴표 "를 \"로, 백슬래시 \를 \\로, 줄 바꿈을 \n으로 변환하는 등). 여러 줄 JSON 객체를 JavaScript, Java, Python 등 소스 코드에 직접 삽입할 수 있는 한 줄 문자열 리터럴로 변환합니다. 대표적인 시나리오: 단위 테스트 작성 시 JSON 응답을 문자열로 테스트 코드에 삽입; Postman이나 curl 명령에서 JSON 문자열 전달; 설정 파일에서 JSON을 문자열 값으로 사용. Unescape는 이스케이프된 문자열을 표준 JSON으로 복원하는 역작업입니다.
네, 가능합니다. 이 도구에는 스마트 구문 복구 엔진(tryFixJSON)이 내장되어 있어 압축 전에 일반적인 JSON 오류를 자동 감지하고 복구를 시도합니다: 1) 마지막 여분의 쉼표(trailing comma), 예 {"a":1,}; 2) 큰따옴표 대신 작은따옴표, 예 {'a':1}; 3) 닫히지 않은 문자열; 4) JavaScript 주석(// 및 /* */); 5) 마지막 여분의 쉼표 등. 복구 후 압축 또는 이스케이프를 실행하여 출력되는 JSON이 100% 유효함을 보장합니다. 복구 가능한 오류가 감지되면 패널에 '복구 시도' 버튼이 표시되며, 클릭하면 한 번에 수정됩니다.
데이터 손실은 없습니다. JSON 압축은 포맷용 공백 문자(공백, 줄 바꿈, 탭)를 제거할 뿐 키 이름, 키 값, 데이터 타입, 구조를 전혀 변경하지 않습니다. JSON.parse 후 JSON.stringify한 결과는 원본 데이터와 완전히 동일합니다. 압축률은 원본 JSON의 포맷 상태에 따라 다릅니다: 원본이 2칸 들여쓰기된 포맷 JSON인 경우 압축률은 보통 20%-40%(들여쓰기와 줄 바꿈 제거); 연속된 공백이나 (복구 후) 주석이 많은 경우 압축률은 50% 이상에 달할 수 있습니다. 상태 표시줄에 원본 바이트 수, 압축 후 바이트 수, 정확한 압축률이 실시간으로 표시됩니다.
아니요. 이 도구는 순수 프론트엔드 처리 아키텍처를 사용하여 JSON 파싱, 압축, 이스케이프, 복구의 모든 연산이 사용자의 로컬 브라우저 JavaScript 엔진에서 실행됩니다. 데이터가 네트워크 요청을 통해 외부 서버에 업로드되지 않으며, 오프라인에서도 정상 작동합니다. API 키, 데이터베이스 설정, 비즈니스 데이터 등 민감한 정보는 항상 로컬에 남아 있습니다.
효율성 향상을 위해 이 도구는 완전한 키보드 단축키를 제공합니다(macOS는 ⌘+Shift, Windows는 Ctrl+Shift 사용): Shift+⌘/Ctrl+C 한 번에 압축; Shift+⌘/Ctrl+E 이스케이프; Shift+⌘/Ctrl+U 언이스케이프; Shift+⌘/Ctrl+O 파일 업로드; Shift+⌘/Ctrl+D 결과 다운로드; Shift+⌘/Ctrl+K 지우기. 입력 시 400ms 디바운스로 현재 모드가 자동 실행되므로 버튼을 반복해서 클릭할 필요가 없습니다.
JSON 압축(JSON Minification)은 JSON 텍스트에서 불필요한 모든 공백 문자(공백, 줄 바꿈 \n, 탭 \t, 캐리지 리턴 \r)와 (비표준이지만 흔한) 주석을 제거하여, 다단 들여쓰기된 포맷 JSON을 한 줄 컴팩트 형식으로 변환하는 프로세스입니다. JSON 압축은 데이터 내용을 전혀 변경하지 않습니다 — 키 이름, 키 값, 데이터 타입(문자열/숫자/불리언/null/배열/객체), 중첩 구조는 완전히 그대로 유지되며, 사람이 읽기 위한 포맷 공백이 제거될 뿐입니다.
JSON 압축의 핵심 가치는 데이터 크기 줄이기에 있습니다. 포맷된 JSON의 들여쓰기 공백과 줄 바꿈은 개발자에게 친절하지만 네트워크 전송과 스토리지에서는 중복 바이트입니다. 예를 들어 일반적인 API 응답은 포맷 후 2KB일 수 있지만 압축 후 1.2-1.5KB가 되어 크기가 25%-40% 줄어듭니다. 고동시 API 시나리오, 모바일 약한 네트워크 환경, 대규모 설정 파일 배포에서 JSON 압축은 대역폭 소비를 크게 줄이고 전송 속도를 높이며 서버 오버헤드를 줄일 수 있습니다. 프로덕션 환경에서는 보통 Gzip/Brotli 등 HTTP 압축과 함께 사용되지만, 콘텐츠 레이어 압축인 JSON Minify는 여전히 대체 불가능합니다.
JSON 압축 구현은 매우 간단합니다: JSON.parse()로 텍스트를 JavaScript 객체로 파싱한 다음 JSON.stringify(obj)를 들여쓰기 매개변수 없이 실행하여 직렬화 출력하면 됩니다 — 이것이 바로 이 도구의 핵심 구현 방식입니다. 이 parse + stringify 방식은 출력 JSON이 100% 유효함을 자연스럽게 보장하며, (오류 복구와 함께) 불법 주석과 후행 쉼표도 자동으로 제거할 수 있습니다. 참고: JSON 압축과 Gzip 압축은 서로 다른 레이어의 최적화입니다 — JSON Minify는 콘텐츠 레이어에서 중복 공백을 제거하고 Gzip은 트랜스포트 레이어의 범용 압축 알고리즘이며, 둘은 조합하여 사용할 수 있습니다.
| 압축 방식 | 압축 레이어 | 무손실 | 가독성 | 적용 시나리오 |
|---|---|---|---|---|
JSON Minify | 콘텐츠 레이어(공백 제거) | 무손실 | 읽을 수 없음(한 줄) | 프로덕션 API 전송, 설정 경량화 |
JSON Beautify | 콘텐츠 레이어(공백 추가) | 무손실 | 높은 가독성 | 개발 디버깅, 수동 확인 |
Gzip | 트랜스포트 레이어 | 무손실 | 읽을 수 없음(바이너리) | HTTP 응답 Content-Encoding |
Brotli | 트랜스포트 레이어 | 무손실 | 읽을 수 없음(바이너리) | HTTPS 정적 리소스 압축(Gzip보다 20% 높은 효율) |
MessagePack | 직렬화 레이어 | 무손실 | 읽을 수 없음(바이너리) | 고성능 RPC 내부 통신 |
| 원래 문자 | 이스케이프 후 | 이름 | 설명 |
|---|---|---|---|
" | \" | 큰따옴표 | JSON 문자열에서 이스케이프가 가장 필요한 가장 흔한 문자 |
\ | \\ | 백슬래시 | 이스케이프 문자 자체를 이스케이프해야 함 |
줄바꿈 | \n | Newline | 여러 줄 문자열을 한 줄로 압축할 때 이스케이프 필수 |
탭 | \t | Tab | 들여쓰기 탭 이스케이프 |
캐리지리턴 | \r | Carriage Return | Windows CRLF 줄바꿈의 CR |
/ | \/ | 슬래시 | JSON 표준에서 허용되지만 필수는 아님(옵션) |