JSON là gì và cách format JSON chuẩn cho developer
19/07/2026
JSON (JavaScript Object Notation) là định dạng dữ liệu phổ biến nhất mà mọi developer đều gặp hàng ngày: từ response của REST API, file cấu hình, log ứng dụng cho tới việc trao đổi dữ liệu giữa frontend và backend. Nó nhẹ, dễ đọc với con người và dễ parse với máy. Nhưng chỉ cần một dấu phẩy sai chỗ hay một cặp nháy dùng nhầm là cả khối dữ liệu trở nên vô dụng. Bài viết này sẽ giúp bạn hiểu rõ JSON là gì, cú pháp chuẩn, các lỗi thường gặp và cách format/validate JSON đúng cách để tiết kiệm thời gian debug.
JSON là gì?
JSON là một định dạng văn bản (text-based) dùng để biểu diễn dữ liệu có cấu trúc. Dù tên bắt nguồn từ JavaScript, JSON là chuẩn độc lập ngôn ngữ (định nghĩa trong RFC 8259) và được hỗ trợ bởi hầu hết mọi ngôn ngữ lập trình: Java, Python, Go, C#, PHP... Ưu điểm lớn nhất của JSON là vừa dễ đọc với con người, vừa dễ xử lý với máy, nên nó gần như thay thế hoàn toàn XML trong các API hiện đại.
Cú pháp cơ bản
Một tài liệu JSON được xây dựng từ hai cấu trúc chính và một vài kiểu giá trị nguyên thủy:
- Object — tập hợp các cặp
key: value, bao trong dấu ngoặc nhọn{ }. Key bắt buộc là chuỗi đặt trong nháy kép. - Array — danh sách giá trị có thứ tự, bao trong dấu ngoặc vuông
[ ]. - String — chuỗi đặt trong nháy kép
"...". Không được dùng nháy đơn. - Number — số nguyên hoặc số thực, ví dụ
42,-3.14,2.5e3. Không có dấu nháy. - Boolean — chỉ hai giá trị
truehoặcfalse(viết thường). - null — biểu diễn giá trị rỗng/không tồn tại (viết thường).
Ví dụ một object JSON hợp lệ mô tả một người dùng:
{
"id": 1024,
"name": "Nguyễn Văn A",
"email": "a.nguyen@example.com",
"isActive": true,
"age": 29,
"roles": ["admin", "editor"],
"profile": {
"avatar": null,
"score": 4.75
}
}
Lưu ý cách các phần tử được lồng vào nhau: object có thể chứa array, array có thể chứa object, và cứ thế lồng bao nhiêu tầng tùy nhu cầu.
Các lỗi JSON phổ biến
Đa số lỗi khi làm việc với JSON không đến từ logic phức tạp mà từ những sai sót cú pháp rất nhỏ. Dưới đây là những lỗi hay gặp nhất:
- Dấu phẩy thừa (trailing comma) — thêm dấu phẩy sau phần tử cuối cùng của object hay array. JavaScript có thể tha thứ, nhưng JSON chuẩn thì không.
- Dùng nháy đơn — JSON chỉ chấp nhận nháy kép
"cho cả key và string.'value'là không hợp lệ. - Key không có nháy kép — viết
name: "A"thay vì"name": "A". Đây là cú pháp object của JavaScript, không phải JSON. - Comment không hợp lệ — JSON chuẩn không hỗ trợ comment, cả
//lẫn/* */. Muốn ghi chú thì phải dùng biến thể như JSON5 hoặc JSONC. - Sai kiểu dữ liệu — bọc số hay boolean trong nháy kép biến chúng thành string, ví dụ
"true"khác vớitrue.
Đây là một khối JSON SAI chứa nhiều lỗi cùng lúc:
{
// thông tin người dùng
name: 'Nguyễn Văn A',
"age": "29",
"roles": ["admin", "editor",],
"isActive": True,
}
Bốn lỗi trong đoạn trên: có comment //, key name thiếu nháy kép và dùng nháy đơn, có trailing comma sau "editor" và sau object, cùng True viết hoa (JSON yêu cầu true). Bản ĐÚNG sẽ như sau:
{
"name": "Nguyễn Văn A",
"age": 29,
"roles": ["admin", "editor"],
"isActive": true
}
Vì sao cần format và validate JSON?
Khi nhận một JSON dài hàng nghìn dòng dồn thành một dòng duy nhất, việc đọc bằng mắt gần như bất khả thi. Format (pretty-print) và validate JSON mang lại nhiều lợi ích thực tế:
- Dễ đọc — thụt lề rõ ràng giúp nhìn ngay cấu trúc lồng nhau và tìm đúng field cần tìm.
- Phát hiện lỗi sớm — trình validate chỉ ra chính xác dòng/cột bị sai cú pháp, thay vì để lỗi âm thầm làm crash ứng dụng lúc runtime.
- Debug API nhanh hơn — khi một response trả về không như mong đợi, format lại giúp so sánh field, kiểm tra kiểu dữ liệu và giá trị null dễ dàng.
- An tâm về dữ liệu — validate trước khi lưu vào config hay gửi đi tránh được lỗi dây chuyền khó truy vết.
Thay vì dán JSON vào editor rồi tự căn tay, bạn có thể dùng công cụ JSON Formatter để format và bắt lỗi ngay lập tức — toàn bộ xử lý chạy trong trình duyệt nên dữ liệu của bạn không bị gửi lên bất kỳ server nào.
Minify vs Pretty-print: khi nào dùng cái nào?
Cùng một dữ liệu JSON có thể được biểu diễn ở hai dạng, mỗi dạng phục vụ mục đích khác nhau:
| Tiêu chí | Pretty-print | Minify |
|---|---|---|
| Hình thức | Thụt lề, xuống dòng | Dồn một dòng, bỏ khoảng trắng |
| Dung lượng | Lớn hơn | Nhỏ nhất |
| Mục đích | Đọc, debug, review | Truyền tải, lưu trữ |
| Dùng khi | Xem log, sửa config, kiểm tra response | Gửi qua network, nhúng vào HTML, cache |
Nguyên tắc đơn giản: pretty-print cho con người, minify cho máy. Khi phát triển và debug, hãy format cho đẹp. Khi triển khai lên production và cần tối ưu băng thông, hãy minify để giảm kích thước payload — với API có lượng request lớn, vài KB tiết kiệm mỗi response cộng dồn lại rất đáng kể.
Ví dụ dạng minify của object người dùng ở trên:
{"name":"Nguyễn Văn A","age":29,"roles":["admin","editor"],"isActive":true}
Mẹo dùng JSON trong thực tế
JSON trong log
Structured logging (log dạng JSON) đang trở thành chuẩn cho các hệ thống hiện đại vì máy có thể parse và truy vấn được. Mỗi dòng log thường là một JSON object độc lập (định dạng NDJSON — mỗi dòng một JSON). Khi cần đọc, hãy copy từng dòng và format lại để soi chi tiết.
JSON trong file config
Nhiều công cụ dùng JSON làm file cấu hình (ví dụ package.json, tsconfig.json). Vì JSON chuẩn không cho comment, nếu cần chú thích hãy cân nhắc JSONC (JSON with Comments) hoặc thêm một field "_comment" quy ước. Luôn validate file config trước khi commit để tránh làm hỏng build.
Escape ký tự đặc biệt
Bên trong một string JSON, một số ký tự bắt buộc phải được escape bằng dấu gạch chéo ngược:
\"— dấu nháy kép bên trong chuỗi.\\— dấu gạch chéo ngược.\n,\t,\r— xuống dòng, tab, carriage return.\uXXXX— ký tự Unicode theo mã hex, ví dụécho ký tự "é".
Ví dụ một string chứa đường dẫn Windows và dấu nháy được escape đúng cách:
{
"path": "C:\\Users\\Admin\\config.json",
"message": "Anh ấy nói \"xin chào\" rồi rời đi",
"note": "Dòng 1\nDòng 2"
}
Đây là nguồn lỗi rất hay gặp khi bạn tự nối chuỗi JSON bằng tay thay vì dùng thư viện serialize. Lời khuyên: luôn dùng hàm serialize chuẩn của ngôn ngữ (như JSON.stringify, Jackson, json.dumps) để tự động xử lý escape, tránh tự ghép chuỗi.
Tóm tắt
JSON là định dạng dữ liệu nền tảng của web hiện đại: cú pháp gồm object, array, string, number, boolean và null, với quy tắc chặt chẽ về nháy kép, không trailing comma và không comment. Nắm vững các lỗi phổ biến, biết khi nào cần pretty-print và khi nào cần minify, cùng cách escape ký tự đặc biệt sẽ giúp bạn xử lý dữ liệu API, log và config nhanh gọn và ít lỗi hơn. Lần tới khi cần kiểm tra hay làm đẹp một khối JSON, hãy thử ngay công cụ JSON Formatter của DevToolHub — format, validate và minify trong một cú click, chạy hoàn toàn trong trình duyệt và không lưu dữ liệu của bạn.