JSON là gì? Hướng dẫn đầy đủ cho người mới bắt đầu
JSON là gì?
JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu dạng văn bản, nhẹ, được thiết kế để con người dễ đọc và viết, đồng thời máy móc dễ phân tích cú pháp và tạo ra. Nó ban đầu được bắt nguồn từ cú pháp object literal của JavaScript nhưng kể từ đó đã trở thành một tiêu chuẩn độc lập với ngôn ngữ được hầu như mọi ngôn ngữ lập trình hỗ trợ.
Ngày nay, JSON là định dạng thống trị cho việc trao đổi dữ liệu trên web. Nó cung cấp năng lượng cho REST API, tệp cấu hình, cơ sở dữ liệu NoSQL, giao tiếp ứng dụng di động và vô số hệ thống dựa trên dữ liệu khác. Sự đơn giản và phổ biến của nó đã khiến nó trở thành lựa chọn mặc định cho các nhà phát triển trên toàn thế giới.
Quy tắc cú pháp JSON
JSON tuân theo một bộ quy tắc cú pháp nghiêm ngặt và tối giản:
- Dữ liệu được cấu trúc dưới dạng cặp khóa/giá trị
- Tất cả các khóa phải là chuỗi trong dấu ngoặc kép (dấu ngoặc đơn không được phép)
- Các cặp khóa/giá trị được phân tách bằng dấu hai chấm (
:) - Các cặp được phân tách bằng dấu phẩy (
,) - Dấu ngoặc nhọn
{}bao quanh object - Dấu ngoặc vuông
[]bao quanh array - Không được phép có dấu phẩy cuối cùng
- Không được phép có comment trong JSON nghiêm ngặt
Ví dụ JSON hợp lệ
{
"name": "Jane Smith",
"age": 28,
"isEmployed": true,
"skills": ["JavaScript", "Python", "SQL"],
"address": {
"street": "123 Main Street",
"city": "San Francisco",
"zipCode": "94102"
},
"phoneNumbers": null
}
Ví dụ JSON không hợp lệ
Dấu phẩy cuối cùng (không hợp lệ):
{
"name": "Jane",
"age": 28,
}
Khóa sử dụng dấu ngoặc đơn (không hợp lệ):
{ 'name': 'Jane' }
Thiếu dấu ngoặc kép trên khóa (không hợp lệ):
{ name: "Jane" }
Các kiểu dữ liệu JSON
JSON hỗ trợ chính xác sáu kiểu dữ liệu:
| Kiểu | Mô tả | Ví dụ |
|------|-------|-------|
| String | Văn bản Unicode trong dấu ngoặc kép | "Hello, world!" |
| Number | Số nguyên hoặc số thực | 42, 3.14, -7, 1.5e10 |
| Boolean | Đúng hoặc sai logic | true, false |
| Null | Giá trị rỗng có chủ đích | null |
| Object | Tập hợp khóa/giá trị không có thứ tự | {"key": "value"} |
| Array | Danh sách giá trị có thứ tự | [1, 2, 3] |
Đáng chú ý là những thứ không có: date, timestamp, dữ liệu nhị phân, undefined và function không có biểu diễn JSON tự nhiên. Date thường được lưu trữ dưới dạng chuỗi ISO 8601 theo quy ước.
JSON so với các định dạng dữ liệu khác
JSON tồn tại cùng với một số định dạng trao đổi dữ liệu khác, mỗi định dạng có những đánh đổi riêng:
- JSON vs XML: JSON ngắn gọn hơn và phân tích cú pháp nhanh hơn. XML hỗ trợ attribute, namespace và schema (XSD) nhưng dài dòng hơn đáng kể.
- JSON vs YAML: YAML dễ đọc hơn cho con người đối với tệp cấu hình với hỗ trợ comment, nhưng cú pháp nhạy cảm với thụt lề của nó có thể dễ gây lỗi. JSON dễ di động hơn và có xác thực nghiêm ngặt hơn.
- JSON vs CSV: CSV phẳng và chỉ dạng bảng. JSON hỗ trợ phân cấp lồng nhau và các kiểu dữ liệu hỗn hợp.
- JSON vs Protocol Buffers: Protobuf nhỏ hơn và nhanh hơn cho giao tiếp máy với máy nhưng yêu cầu định nghĩa schema và không thể đọc được bởi con người.
Tại sao JSON thống trị Web API
Một số yếu tố giải thích sự thống trị của JSON trong thiết kế web API:
- Tính phổ biến ngôn ngữ -- Mọi ngôn ngữ chính đều có trình phân tích cú pháp JSON gốc hoặc được bảo trì tốt, loại bỏ trở ngại tích hợp.
- Hỗ trợ gốc của trình duyệt --
JSON.parse()vàJSON.stringify()của JavaScript khiến JSON trở thành lựa chọn tự nhiên cho các ứng dụng web. - Băng thông tối thiểu -- Cú pháp nhẹ của JSON tạo ra payload nhỏ hơn XML, giảm độ trễ và chi phí băng thông.
- Khả năng đọc của con người -- Nhà phát triển có thể kiểm tra, gỡ lỗi và viết tay dữ liệu JSON mà không cần công cụ đặc biệt.
- Schema linh hoạt -- Không giống như các định dạng cứng nhắc như XML Schema hoặc Protocol Buffers, JSON thích ứng với các cấu trúc dữ liệu đang phát triển mà không cần biên dịch lại.
Các trường hợp sử dụng JSON phổ biến
- REST và GraphQL API -- Định dạng tiêu chuẩn cho payload request và response.
- Tệp cấu hình -- Được sử dụng bởi các công cụ như ESLint, Prettier, webpack và VS Code.
- Cơ sở dữ liệu NoSQL -- MongoDB và CouchDB lưu trữ dữ liệu dưới dạng tài liệu giống JSON.
- Tuần tự hóa dữ liệu -- Cấu trúc dữ liệu để lưu trữ, truyền tải hoặc caching.
- Giao tiếp thời gian thực -- Tin nhắn JSON trong luồng WebSocket và Webhook.
- Tổng hợp nhật ký -- Các công cụ ghi nhật ký có cấu trúc như Winston, Logstash và Datadog sử dụng JSON cho các mục nhật ký có thể tìm kiếm và lọc được.
Xác thực và định dạng JSON
Khi làm việc với JSON, xác thực là rất quan trọng. Một lỗi cú pháp duy nhất -- một dấu phẩy cuối cùng, một dấu ngoặc kép bị thiếu hoặc một ký tự không được escape -- có thể phá vỡ toàn bộ tích hợp API hoặc tệp cấu hình. Kiểm tra thủ công là không đáng tin cậy, đặc biệt là đối với các tài liệu JSON lớn.
Cách xác thực JSON
Xác thực thường tuân theo các bước sau:
- Phân tích cú pháp chuỗi JSON bằng trình phân tích cú pháp tiêu chuẩn như
JSON.parse()trong JavaScript hoặc tương đương trong ngôn ngữ bạn chọn. - Kiểm tra lỗi cú pháp -- trình phân tích cú pháp sẽ ném ra lỗi tại vi phạm đầu tiên với thông báo chỉ ra vị trí vấn đề.
- Sửa lỗi lặp đi lặp lại -- vì trình phân tích cú pháp dừng ở lỗi đầu tiên, hãy sửa nó và xác thực lại cho đến khi tài liệu vượt qua.
Hầu hết các công cụ JSON trực tuyến kết hợp xác thực với định dạng. Dán JSON của bạn vào, và công cụ sẽ ngay lập tức kiểm tra cú pháp, tô sáng lỗi với số dòng và số cột, và tạo ra đầu ra sạch sẽ, có thụt lề. Điều này nhanh hơn đáng kể so với việc gỡ lỗi bằng các ngoại lệ của trình phân tích cú pháp trong mã của bạn.
Mẹo làm việc với JSON
- Luôn xác thực trước khi sử dụng -- Không bao giờ cho rằng JSON viết tay là hợp lệ.
- Sử dụng linter -- Các công cụ như ESLint với plugin JSON phát hiện lỗi trước khi chúng đến production.
- Ưu tiên thư viện JSON -- Tạo JSON bằng thư viện tuần tự hóa thay vì nối chuỗi để tránh các lỗi cú pháp tinh vi.
- Đặt header Content-Type nghiêm ngặt -- Đối với API, thực thi
Content-Type: application/jsonđể từ chối sớm các yêu cầu không đúng định dạng.
Sử dụng trình xác thực và định dạng JSON trực tuyến miễn phí để kiểm tra ngay cú pháp JSON của bạn, xác định vị trí lỗi và định dạng dữ liệu để dễ đọc. Cho dù bạn là người mới bắt đầu học những điều cơ bản hay là một nhà phát triển có kinh nghiệm đang gỡ lỗi API production, công cụ JSON Formatter & Validator của chúng tôi giúp bạn làm việc với dữ liệu JSON một cách hiệu quả.