Pretty-print JSON là gì | Khi nào format, khi nào minify (2026)
Pretty-print = thêm indent để đọc; minify = xóa whitespace để gọn. Dùng pretty khi debug API 1 dòng, review config, tìm field lồng nhau. Dùng minify khi gửi payload hoặc cần 1 dòng. Không đổi nghĩa dữ liệu — chỉ đổi cách nhìn. Dán vào JSON formatter trên trình duyệt (không upload), format trước khi đoán bug Nest/Express.
Mở Chrome DevTools → Network → Response: một dòng JSON dài hơn màn hình. Bạn kéo ngang, đếm dấu {, rồi bỏ cuộc và hỏi teammate “field orderId nằm đâu?”. Đó là lúc pretty-print cứu buổi debug — không phải khi bạn đã viết serializer mới.
Bài này dành developer / sinh viên / freelancer Việt Nam hay làm việc với REST API, webhook, package.json, mock data: giải thích pretty-print JSON là gì, khi nào cần, và khi nào nên minify thay vì format.
Cần tách lỗi cú pháp vs schema trước khi đào Nest? Xem Validate JSON trước khi debug. Chi tiết
Unexpected token→ bài lỗi đầy đủ.
Bài viết này giúp bạn
- Định nghĩa pretty-print và khác biệt với minify / validate
- Biết 5 tình huống nên format ngay
- So sánh workflow: DevTools,
jq, VS Code, formatter online - Tránh nhầm “đã format” với “đã đúng schema”
- Checklist dùng JSON formatter Kawa an toàn (local)
Pretty-print JSON là gì?
Pretty-print (còn gọi format, beautify, định dạng) là biến chuỗi JSON thành dạng nhiều dòng + thụt đầu dòng, để mắt người đọc thấy cây object/array.
Ví dụ trước (minify — hợp lệ nhưng khó đọc):
{"user":{"id":42,"name":"Lan","roles":["admin","editor"]},"meta":{"page":1}}
Sau pretty-print (cùng dữ liệu):
{
"user": {
"id": 42,
"name": "Lan",
"roles": [
"admin",
"editor"
]
},
"meta": {
"page": 1
}
}
Điểm quan trọng:
JSON.parsekhông phân biệt pretty hay minify — chỉ quan tâm cú pháp (quote, comma, bracket).- Pretty-print không sửa trailing comma hay nháy đơn. Nếu chuỗi sai chuẩn, format sẽ báo lỗi, không “làm đẹp giả”.
- Whitespace (space, newline, tab giữa token) không mang nghĩa trong JSON — đổi indent không đổi giá trị.
Tiếng Anh: pretty-print, format, beautify. Tiếng Nhật: 整形. Trong UI Kawa: nút Định dạng (Format) = pretty-print; Nén (Minify) = bỏ whitespace.
Pretty-print vs minify vs validate
Ba việc khác nhau — đừng gộp thành một nút “làm JSON đẹp”.
| Thao tác | Làm gì | Khi dùng |
|---|---|---|
| Pretty-print | Thêm newline + indent | Đọc cấu trúc, review PR, tìm field |
| Minify | Xóa whitespace thừa → 1 dòng | Payload nhỏ, paste URL/CLI, so sánh length |
| Validate cú pháp | Parse thử; báo vị trí lỗi | Trước khi debug framework / deploy config |
| Mục tiêu | Nên làm |
|---|---|
| Hiểu response API có bao nhiêu lớp nest | Pretty-print |
| Gửi lại body trong curl / Postman gọn | Minify (sau khi đã đúng) |
CI fail vì Unexpected token | Validate + sửa nguồn — xem quick fix Unexpected token |
| Kiểm tra DTO Nest thiếu field | Schema (Zod/class-validator) — sau khi parse OK |
Pretty-print thành công chỉ chứng minh: chuỗi parse được và bạn đọc được. Nó không chứng minh amount đúng kiểu số hay thiếu userId.
Khi nào cần pretty-print?
1. API response / webhook 1 dòng
Network tab thường hiện body minify. Nest 3–4 tầng (data.result.items[].attrs) mà không indent thì dễ nhầm key gần giống (userId vs user_id).
Làm: Copy Response → JSON formatter → Format → tìm field bằng Ctrl+F trên bản đã indent.
2. Log staging / PM2 / CloudWatch
Log hay escape thành \" hoặc cắt giữa chừng. Pretty giúp thấy object đóng chưa đủ }. Nếu format fail ngay — đừng soi business logic; sửa chuỗi trước (Unexpected token ngắn).
3. Sửa config.json / mock / fixture trong PR
Reviewer đọc diff 1 dòng gần như không đọc được. Pretty trước khi commit (Prettier parser: json hoặc format bằng tool) giúp diff theo từng key.
4. So sánh hai payload
Hai JSON minify khác nhau 1 field vẫn trông “giống”. Pretty + sort key (nếu team quy ước) hoặc diff tool dễ hơn. Minify lại sau khi đã hiểu khác biệt.
5. Dạy / học API (sinh viên, intern outsourcing)
Mentor bảo “xem response” — intern mở 1 dòng 8KB. Pretty-print là bước đầu tiên của đọc contract API, trước khi viết TypeScript interface.
Khi không cần pretty
- Pipeline chỉ
JSON.parserồi lưu DB — không cần indent trong storage. - File đã được Prettier format trong git — đừng minify rồi commit lại (noise diff).
- Bạn chỉ cần biết “parse được không” — validate đủ; pretty là bonus cho mắt.
Case: debug đơn hàng 1 dòng
Freelancer nhận task: “API /orders thiếu shipping.province trên UI”. Response:
{"id":9012,"items":[{"sku":"A1","qty":2}],"shipping":{"city":"Hà Nội","district":"Cầu Giấy"},"total":150000}
Không pretty, dễ kết luận “backend không trả province” trong khi thật ra field nằm sâu hơn hoặc tên khác (provinceCode). Sau format:
{
"id": 9012,
"items": [
{
"sku": "A1",
"qty": 2
}
],
"shipping": {
"city": "Hà Nội",
"district": "Cầu Giấy"
},
"total": 150000
}
Thấy rõ: không có province — bug contract thật, không phải “UI đọc sai path”. Pretty-print giúp phân loại: thiếu field vs sai path vs JSON hỏng.
Cách pretty-print thực tế
Trên Kawa (không đăng ký, chạy local)
- Mở JSON formatter
- Dán JSON (ưu tiên đã che token)
- Định dạng (Format) → bản pretty-print; lỗi cú pháp hiện kèm message
- Cần 1 dòng: Nén (Minify) → copy
Công cụ hỗ trợ format, minify, báo JSON không hợp lệ, sample, copy — xử lý trong trình duyệt.
So với cách khác
| Cách | Ưu | Nhược / lưu ý |
|---|---|---|
| Formatter trình duyệt | Nhanh, không cài, local-only nếu chọn đúng tool | File cực lớn có thể chậm trên máy yếu |
| VS Code Format Document | Gắn Prettier, đồng bộ repo | Cần mở file; JSONC (comment) ≠ JSON production |
jq (jq .)** | CLI, script CI, pipe từ curl | Cần cài; Windows/PATH đôi khi phiền |
| DevTools → Pretty print | Ngay trên Response (Chrome) | Khó copy lại nguyên chuỗi đã format sang editor |
Team outsourcing hay dùng mix: DevTools để nhìn nhanh, Kawa/jq khi cần copy sạch sang PR hoặc chat với khách (che PII trước).
Minify: mặt kia của pretty-print
Minify không làm JSON “nhanh hơn” khi parse trong V8 một cách đáng kể với payload nhỏ — lợi chính là:
- Ít byte hơn trên wire (gzip vẫn quan trọng hơn với text lặp)
- Dễ dán vào chỗ chỉ nhận 1 dòng (một số form, env var kém thiết kế)
- So sánh
Content-Lengthkhi reproduce
Đừng minify rồi commit vào git thay cho bản indent — reviewer và git blame sẽ đau. Giữ pretty trong repo; minify lúc build hoặc lúc gửi request thử.
Checklist 2 phút trước khi format
- Chuỗi có phải JSON thuần không? (không có
data:, không có prefix log timestamp) - Đã bỏ BOM / ký tự lạ từ Word/Excel chưa?
- Che
Authorization, số CCCD, SĐT trước khi dán tool online - Format OK → đọc cấu trúc; Format fail → sửa Unexpected token trước
- Cần gửi lại request → minify bản đã đúng, không minify bản đang lỗi
Kết nối công cụ và bài liên quan
- Thử ngay: JSON formatter — Format / Minify / Copy trên trình duyệt
- Validate JSON trước Nest/Express — cú pháp vs schema
- Unexpected token — quick fix → bài lỗi đầy đủ
- JSON ↔ CSV khi cần đưa sang Excel
Pretty-print không phải “công cụ cao cấp” — đó là thói quen đọc dữ liệu. Một lần format đúng lúc tiết kiệm cả buổi đoán path field sai.