짧은 답: JSON에서 'pretty print'와 'format'은 같은 것 —— 'beautify'도 마찬가지입니다. 셋 모두 데이터를 바꾸지 않고 일관된 들여쓰기와 줄바꿈을 더해 구조를 읽기 쉽게 하는 일을 가리킵니다. 그런데 혼동은 실재합니다. 옆에 진짜 다른 작업(minify, validate, tree view)이 같이 있기 때문입니다. 이 글은 용어를 정리하고 실제로 무엇이 다른지를 보여 줍니다.
Pretty Print, Format, Beautify —— 같은 작업
'Pretty print JSON', 'format JSON', 'beautify JSON' 모두 같은 작업을 가리킵니다: JSON 값(흔히 한 줄짜리 컴팩트 문자열)을 들여쓰기와 줄바꿈과 함께 다시 직렬화. 출력은 입력과 의미적으로 동일 합니다 —— 토큰 사이의 공백은 JSON에서 무의미하므로, 어느 형식이든 파서는 같은 데이터를 만들어 냅니다.
// 컴팩트(API가 돌려주는 형태)
{"user":{"name":"Ada","roles":["admin","editor"]}}
// pretty-printed / formatted / beautified —— 데이터는 같음
{
"user": {
"name": "Ada",
"roles": [
"admin",
"editor"
]
}
}따라서 도구가 'Format', 'Beautify', 'Pretty Print'를 별도 버튼으로 둬도, 하는 일은 같습니다. 의미 있는 기술적 구별은 없습니다.
그럼 실제로 다른 건 무엇?
유용한 구별은 pretty-print와 format 사이가 아니라 —— '포맷팅'과 다음의 이웃 작업들 사이에 있습니다:
| 작업 | 하는 일 | 데이터를 바꾸나? |
|---|---|---|
| Pretty print / format / beautify | 가독성을 위해 공백 추가 | 안 바꿈 |
| Minify | 크기를 줄이기 위해 공백 제거 | 안 바꿈 |
| Validate | JSON 문법이 올바른지 확인 | 안 바꿈 |
| Tree view | 상호작용 가능하고 접을 수 있는 구조 표시 | 안 바꿈 |
| Repair | 유효하지 않은 JSON(따옴표, 쉼표)을 고쳐 parse 가능하게 함 | 바꿈(문법 수정) |
Minify는 pretty print의 정반대 —— JSON minify 방법 참고. 검증은 별도 체크(JSON 검증 방법), 큰 payload를 트리 형태로 탐색하는 것은 또 다른 것(JSON 트리 뷰어). 입력이 아예 parse되지 않는다면 format이 아니라 repair부터 필요합니다.
JSON을 pretty print 하는 법
도구가 어떤 단어를 쓰든 동작은 같습니다:
// JavaScript —— 세 번째 인자가 들여쓰기
JSON.stringify(value, null, 2); // 값으로부터
JSON.stringify(JSON.parse(raw), null, 2); // JSON 문자열로부터
# Python
import json
json.dumps(data, indent=2)
# 커맨드라인
jq . data.json # jq는 기본으로 pretty-print
python3 -m json.tool data.json전체 워크스루 —— 키 정렬, 커맨드라인 옵션, 다른 형식 변환 —— 은 JSON 포맷팅 방법 참고.
온라인에서 JSON pretty print
코드를 쓰지 않고 pretty-print 하려면 JSON을 JSON Fix 에 붙여 넣으세요: 일관된 2칸 들여쓰기로 포맷팅(흔한 오류는 먼저 고치므로 완전 유효하지 않은 JSON에도 동작). 모두 브라우저에서 동작하고 업로드는 없습니다. 큰 문서의 상호작용 뷰가 필요하면 JSON Viewer 를 쓰세요.
자주 묻는 질문
'pretty print JSON' 과 'format JSON' 은 같은가요?
예. JSON에서 pretty print, format, beautify 모두 같은 뜻: 데이터를 바꾸지 않고 가독성을 위해 들여쓰기와 줄바꿈을 더하는 것.
pretty print가 내 JSON 데이터를 바꿉니까?
아니요. 토큰 사이 공백은 JSON에서 무의미하므로 pretty-printed와 컴팩트 두 형식은 동일한 데이터 구조로 parse 됩니다.
JavaScript에서 JSON을 어떻게 pretty print?
JSON.stringify(value, null, 2) 사용 —— 세 번째 인자가 들여쓰기(2칸, 4칸, 또는 '\t' 로 탭)를 설정. 문자열에서 시작하면 먼저 parse.
JSON pretty print의 반대는?
Minify —— 의미 없는 공백을 모두 제거해 한 줄짜리 컴팩트 JSON을 만드는 것. JSON minify 방법 참고.
관련 도구와 가이드
- JSON Fix —— 브라우저에서 JSON pretty-print(수리도)
- JSON 포맷팅 방법 —— 코드와 CLI까지 갖춘 완전 how-to
- JSON minify 방법 —— 반대 작업
- JSON Viewer 와 JSON Formatter —— 보기 vs 포맷
- JSON이란? —— 왜 공백이 무의미한가