Cú Pháp
Quy Tắc
{ }Object (cặp key-value không thứ tự)
[ ]Mảng (danh sách giá trị có thứ tự)
"key": valueKey phải là chuỗi có dấu ngoặc kép
No trailing commaPhần tử cuối không được có dấu phẩy
No commentsJSON không cho phép comments
Ví Dụ Tối Giản
{ "name": "Alice", "age": 30, "active": true }
Kiểu Dữ Liệu
Sáu Kiểu Giá Trị
"string"Văn bản UTF-8 có dấu ngoặc kép
42 / 3.14Số (số nguyên hoặc số thực)
true / falseBoolean
nullNull (không có giá trị)
{ }Object
[ ]Mảng
Ký Tự Escape Trong Chuỗi
\"Dấu ngoặc kép
\\Dấu gạch chéo ngược
\n \tXuống dòng, tab
\uXXXXUnicode escape (hex)
Objects
Cú Pháp Object
{ "id": 1, "name": "Widget", "tags": ["new", "sale"] }
Quy Tắc
KeysPhải là chuỗi duy nhất có dấu ngoặc kép
ValuesBất kỳ kiểu JSON hợp lệ
OrderThứ tự key không được đảm bảo
NestingObject có thể chứa object
Arrays
Cú Pháp Mảng
[1, "two", true, null, {"key": "val"}]
Mảng Kiểu Hỗn Hợp
{ "matrix": [[1, 2], [3, 4]], "empty": [] }
Quy Tắc
OrderedPhần tử giữ thứ tự chèn
Mixed typesPhần tử mảng có thể khác kiểu
IndexingBắt đầu từ 0 (trong hầu hết ngôn ngữ)
Lồng Nhau
Cấu Trúc Lồng
{ "user": { "name": "Alice", "address": { "city": "Boston" }, "scores": [95, 88, 72] } }
Mẫu Truy Cập
obj.user.nameKý hiệu chấm (JavaScript)
obj["user"]["name"]Ký hiệu ngoặc vuông
obj.user.scores[0]Chỉ số mảng trong object lồng
Xác Thực Schema
Ví Dụ JSON Schema
{ "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 } }, "required": ["name"] }
Từ Khóa Schema
typestring, number, integer, boolean, object, array, null
requiredMảng tên thuộc tính bắt buộc
propertiesĐịnh nghĩa thuộc tính object mong đợi
enumHạn chế tập giá trị cố định
minLength / maxLengthRàng buộc độ dài chuỗi
minimum / maximumRàng buộc phạm vi số
jq Cơ Bản
Bộ Lọc Phổ Biến
.Identity — truyền input qua
.keyTruy cập key object
.key.nestedTruy cập key lồng nhau
.[0]Phần tử mảng đầu tiên
.[]Lặp qua tất cả phần tử mảng
select(.age > 20)Lọc theo điều kiện
map(.name)Biến đổi từng phần tử
lengthĐộ dài mảng hoặc chuỗi
keysCác key object dưới dạng mảng
Ví Dụ jq
echo '{"a":1}' | jq '.a' # 1 echo '[1,2,3]' | jq 'map(. * 2)' # [2,4,6] cat data.json | jq '.users[].name' cat data.json | jq '.[] | select(.active)'
Mẫu Phổ Biến
API Response
{ "status": 200, "data": [{"id": 1, "name": "Alice"}], "meta": {"total": 42, "page": 1} }
File Cấu Hình
{ "host": "localhost", "port": 8080, "debug": false, "features": ["auth", "logging"] }
Mẹo
ValidateDùng jsonlint hoặc python -m json.tool
Pretty printjq . file.json hoặc python -m json.tool
JSONLMột JSON object mỗi dòng (phân cách newline)
JSON5 / JSONCMở rộng cho phép comments và dấu phẩy cuối