본문으로 건너뛰기
jsonbeautifiers
한국어

JSON Pretty Print

여기서 정렬하거나, 파이썬·자바스크립트·jq 등 9개 언어의 한 줄 코드를 복사하세요.

JSONPath로 필터링

RFC 9535 문법입니다. 결과는 이 창을 연 패널을 대체합니다.

 

붙여 넣은 것은 여러분의 브라우저를 떠나지 않습니다. connect-src 허용 목록 덕분에 이는 약속이 아니라 브라우저가 강제하는 보장입니다. 직접 확인하기

pretty print와 정렬은 이름만 둘일 뿐 같은 작업입니다. 위에 문서를 붙여넣어 여기서 처리하거나, 지금 쓰고 있는 언어의 한 줄 코드를 가져가세요.

아래 예제는 실제로 동작하는 쪽입니다. 출력이 이상하게 나온 뒤에야 알게 되는 인자들까지 포함했습니다.

모두가 걸려 넘어지는 인자들

파이썬의 ensure_ascii
기본값이 True라서 ASCII가 아닌 문자를 전부 이스케이프합니다. 이름이나 이모지가 많은 문서는 \u 시퀀스의 벽이 되어 돌아옵니다. ensure_ascii=False를 넘기세요.
압축할 때의 파이썬 separators
separators=(",", ":")를 넘기지 않으면 json.dumps는 쉼표와 콜론 뒤에 공백을 남깁니다. 그러니 순진하게 호출한 압축은 압축이 아닙니다.
PHP의 슬래시 이스케이프
json_encode는 기본적으로 슬래시와 유니코드를 이스케이프합니다. JSON_UNESCAPED_SLASHES와 JSON_UNESCAPED_UNICODE로 끌 수 있습니다. PHP는 또 공백 4칸으로 들여쓰고, 그건 바꿀 수 없습니다.
Go의 HTML 이스케이프
인코더는 기본적으로 <, >, &를 \u003c 같은 형태로 이스케이프합니다. HTML에 안전하게 넣기 위해서입니다. SetEscapeHTML(false)로 끕니다.
이 방법들은 모두 숫자를 한 바퀴 돌립니다
파싱했다가 다시 직렬화하면 숫자 텍스트가 다시 쓰입니다. 1.50은 1.5가 되고, 19자리 ID는 끝자리를 잃습니다. Go는 예외입니다. json.Indent는 날 바이트를 다룹니다.

How to do this in code

아홉 개 언어와 도구에서의 pretty print.

js JavaScript
JSON.stringify(JSON.parse(text), null, 2)
py Python
json.dumps(json.loads(text), indent=2, ensure_ascii=False)

# From a file, on the command line
python -m json.tool --indent 2 --no-ensure-ascii in.json out.json
sh jq와 셸
jq . file.json
curl -s https://api.example.com/x | jq .
pbpaste | jq .            # macOS, from the clipboard
jq -S . file.json         # sorted keys, for stable diffs
go Go

json.Indent는 디코딩하지 않고 바이트를 다시 포맷하므로 숫자는 그대로 남습니다.

var out bytes.Buffer
json.Indent(&out, data, "", "  ")
fmt.Println(out.String())
rb Ruby
JSON.pretty_generate(JSON.parse(text))
php PHP
json_encode(json_decode($text), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)
java Java
ObjectMapper mapper = new ObjectMapper();
Object value = mapper.readValue(text, Object.class);
String pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(value);
rs Rust

serde_json의 arbitrary_precision 기능을 켜면 왕복해도 숫자 텍스트가 그대로 유지됩니다.

let value: serde_json::Value = serde_json::from_str(text)?;
let pretty = serde_json::to_string_pretty(&value)?;
cs C#
using var doc = JsonDocument.Parse(text);
var pretty = JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true });

자주 묻는 질문

pretty print는 beautify나 포맷과 다른가요?
다르지 않습니다. 셋 다 사람이 문서를 읽을 수 있도록 공백을 넣는 일을 가리킵니다. 커뮤니티마다 다른 단어로 굳었을 뿐입니다.
VS Code에서 JSON을 정렬하려면?
파일을 열고 Windows와 Linux에서는 Shift+Alt+F, macOS에서는 Shift+Option+F를 누르세요. 제목 없는 파일에 붙여넣은 조각이라면 먼저 언어 모드를 JSON으로 바꾸세요. 그러지 않으면 포맷터가 무엇을 해야 할지 모릅니다.
curl 응답을 정렬하려면?
파이프로 넘기세요. jq가 있으면 curl -s URL | jq ., 없으면 curl -s URL | python -m json.tool. curl에 -s를 붙이지 않으면 진행 표시줄까지 파이프로 흘러 들어갑니다.