Khi bạn mua vài món đồ từ cùng một người bán trên Shopee, họ sẽ đóng gói tất cả vào một hộp và gửi tới bạn. Nói chung "rất chi là tiện lợi", thế kỷ 21 rồi mọi thứ thật là "tuyệt văn vời", không có người bán nào "thần kinh" đến mức gói riêng mỗi món một hộp và gửi làm nhiều lần cho cùng một người!
Nếu bạn mới học PHP.
Hoặc mới tìm hiểu API.
Thì rất có thể bạn đã từng nhìn thấy một thứ như thế này.
{
"name": "Nguyễn Văn A",
"age": 25,
"city": "Đà Nẵng"
}
Bạn nhìn.
Rồi tự hỏi.
"Đây là code PHP?"
Không.
"Là JavaScript?"
Cũng không hẳn.
"Là Database?"
Không luôn.
Đây chính là:
JSON.
Và nếu bạn làm Web.
Sớm hay muộn.
Bạn sẽ gặp JSON.
Gần như...
Mỗi ngày.
JSON là gì?
JSON (JavaScript Object Notation) là một định dạng dùng để lưu trữ và trao đổi dữ liệu giữa các chương trình.
JSON có cấu trúc đơn giản, dễ đọc và được hầu hết các ngôn ngữ lập trình hỗ trợ.
Ngày nay, phần lớn Web API đều sử dụng JSON để gửi và nhận dữ liệu.
Ví dụ thực tế
Hãy tưởng tượng.
Bạn đặt mua một chiếc điện thoại.
Người bán.
Không thể gửi riêng:
- Điện thoại.
- Sạc.
- Tai nghe.
- Hóa đơn.
- ...
- Lung tung.
Họ sẽ bỏ tất cả.
Vào:
Một chiếc hộp.
↓
Đóng gói.
↓
Gửi cho bạn.
JSON cũng giống như vậy.
Nó là:
Chiếc hộp dùng để đóng gói dữ liệu.
API rất thích JSON
Ở bài trước.
Chúng ta nói.
API giống như nhân viên phục vụ.
Bạn gọi:
"Một hamburger."
↓
Nhà bếp làm xong.
↓
Nhân viên mang ra.
Nhưng.
Mang bằng cái gì?
Đó chính là:
JSON.
Ví dụ đơn giản
Một người dùng.
Có:
- Tên.
- Tuổi.
- Địa chỉ.
JSON sẽ trông như thế này.
{
"name": "Lan",
"age": 20,
"city": "Huế"
}
Rất dễ đọc.
Ngay cả người không biết lập trình.
Cũng đoán được ý nghĩa của...cái gói đồ JSON đó!
JSON giống một chiếc hộp có nhãn
Ví dụ.
Bạn mở hộp.
Bên ngoài có ghi:
Tên
Bên trong.
Lan
Tiếp theo.
Tuổi
↓
20
Đó chính là:
{
"name":"Lan",
"age":20
}
JSON có lưu nhiều dữ liệu được không?
Được.
Ví dụ.
Danh sách sản phẩm.
[ { "name":"Laptop", "price":1500 }, { "name":"Mouse", "price":25 } ]
Đây là điều API làm mỗi ngày.
Vì sao không dùng HTML?
HTML được tạo ra để:
Hiển thị.
Ví dụ.
<h1>Laptop</h1>
Trình duyệt nhìn vào.
↓
Biết phải hiện tiêu đề.
JSON thì khác.
Nó không quan tâm giao diện.
Nó chỉ mang:
Dữ liệu.
Ví dụ.
{
"product":"Laptop"
}Website.
Ứng dụng.
Hoặc điện thoại.
Muốn hiển thị thế nào.
Là việc của chúng.
PHP có làm việc với JSON không?
Có.
Rất nhiều.
PHP có:
json_encode()
Để biến dữ liệu thành JSON.
Ví dụ.
$user = [
"name" => "Lan",
"age" => 20
];
echo json_encode($user);Kết quả.
{
"name":"Lan",
"age":20
}Còn ngược lại?
PHP cũng có:
json_decode()
Để đọc JSON.
Ví dụ.
API gửi về.
{
"temperature":30
}PHP sẽ đọc.
Rồi lấy ra.
Để xử lý.
Tập tành làm web
Có bạn hỏi.
"Mình gọi API.
Màn hình hiện."
{
"status":"success",
"data":[...]
}Bạn ấy nghĩ.
API bị lỗi.
Không.
API đang làm đúng.
Nó trả về:
JSON.
Việc của website.
Là đọc JSON.
Rồi hiển thị đẹp hơn.
JSON có phải Database không?
Không.
Database.
Là nơi lưu dữ liệu.
JSON.
Chỉ là cách đóng gói dữ liệu.
Giống như.
Một chiếc thùng carton.
Không phải.
Kho hàng.
JSON có phải chỉ JavaScript mới dùng?
Không. Đây là hiểu lầm rất phổ biến.
Tên có chữ:
JavaScript.
Nhưng.
- PHP.
- Python.
- Java.
- C#.
- Go.
- Node.js.
- Ruby.
- ...
Đều dùng JSON.
Một hiểu lầm phổ biến
Nhiều người nghĩ.
JSON.
Là ngôn ngữ lập trình. Không đùa đâu, nhiều bạn đã thật sự cho rằng như vậy!
Không phải.
JSON.
Không chạy chương trình.
Không có:
- if.
- for.
- while.
- function.
- ...
JSON.
Chỉ dùng để:
Mang dữ liệu.
Một mẹo "hết nước chấm"
Nếu mở API.
Thấy.
{
...
}
Hoặc.
[
...
]
Đừng sợ.
Bạn chỉ đang nhìn thấy.
Một "gói hàng."
Việc tiếp theo.
Là mở gói hàng.
Rồi lấy dữ liệu ra.
Debug kiểu dev "xịn sò"
1. Đọc JSON trước
Đừng vội code.
Hãy xem API trả gì.
2. Kiểm tra dấu ngoặc
JSON rất ghét thiếu:
}
Hoặc.
]
3. Kiểm tra dấu phẩy
Thiếu hoặc thừa.
JSON đều báo lỗi.
4. Dùng json_decode()
Trong PHP.
Đừng tự cắt chuỗi.
5. Luôn đọc tài liệu API
Xem dữ liệu trả về có cấu trúc ra sao.
Checklist chuẩn không cần chỉnh
- JSON là định dạng dữ liệu
- JSON không phải Database
- JSON không phải ngôn ngữ lập trình
- API hiện đại thường dùng JSON
- PHP có json_encode()
- PHP có json_decode()
FAQ nhanh
JSON là viết tắt của gì?
JavaScript Object Notation.
JSON có phải JavaScript không?
Không. Đây là định dạng dữ liệu được rất nhiều ngôn ngữ lập trình sử dụng.
Vì sao API thích dùng JSON?
Vì JSON nhỏ gọn, dễ đọc và hầu như ngôn ngữ nào cũng hỗ trợ.
PHP có đọc được JSON không?
Có. PHP hỗ trợ rất tốt thông qua json_encode() và json_decode().
Bạn có thể cũng đang gặp
API là gì? (Giải thích như gọi đồ ăn.)
HTTP vs HTTPS là gì? (Vì sao trình duyệt hiện "Not Secure"?)
Cookie là gì? (Vì sao website nhớ được bạn là ai?)
Session vs Cookie - Hai anh em dễ nhầm nhất của PHP