← 전체 글

JSON Pretty Print vs JSON Format: 차이는?

JSON에서 pretty print, format, beautify는 같은 의미. 그 이유, 실제로 다른 것(minify, validate, tree view), 그리고 온라인에서 JSON을 pretty print하는 법.

짧은 답: 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크기를 줄이기 위해 공백 제거안 바꿈
ValidateJSON 문법이 올바른지 확인안 바꿈
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 방법 참고.

관련 도구와 가이드