Làm việc với JSON

1. Giới thiệu

JSON (JavaScript Object Notation) là định dạng văn bản dùng để lưu trữ và truyền tải dữ liệu có cấu trúc. JSON rất phổ biến trong web development và API.

Tại sao học JSON?

  • ✅ Định dạng chuẩn cho Web APIs

  • ✅ Dễ đọc cho cả người và máy

  • ✅ Hỗ trợ cấu trúc dữ liệu phức tạp (nested)

  • ✅ Python hỗ trợ JSON rất tốt

Ví dụ JSON

{
    "name": "Alice",
    "age": 25,
    "city": "New York",
    "skills": ["Python", "JavaScript", "SQL"],
    "is_student": false
}

2. Module json

Python có module json built-in.

3. Kiểu dữ liệu JSON vs Python

JSON
Python

object {}

dict

array []

list

string

str

number (int)

int

number (float)

float

true

True

false

False

null

None

4. Chuyển đổi Python → JSON (Serialization)

4.1 - json.dumps() - Chuyển object thành string

4.2 - json.dumps() với formatting đẹp

Output:

4.3 - json.dumps() với sort_keys

4.4 - json.dump() - Ghi trực tiếp vào file

Lưu ý: ensure_ascii=False để hiển thị ký tự tiếng Việt đúng

5. Chuyển đổi JSON → Python (Deserialization)

5.1 - json.loads() - Chuyển string thành object

5.2 - json.load() - Đọc từ file

6. Làm việc với JSON phức tạp

6.1 - Nested JSON

6.2 - List of objects

7. Xử lý ký tự đặc biệt

7.1 - Tiếng Việt và Unicode

8. Xử lý lỗi

8.1 - JSON không hợp lệ

8.2 - File không tồn tại

9. Làm việc với API

9.1 - Đọc JSON từ API (giả lập)

10. JSON với Custom Objects

10.1 - Serialize custom class

10.2 - Deserialize to custom class

11. Thao tác với JSON

11.1 - Thêm dữ liệu vào JSON file

11.2 - Cập nhật dữ liệu

11.3 - Xoá dữ liệu

12. So sánh JSON vs CSV

Feature
JSON
CSV

Cấu trúc

Phân cấp (nested)

Phẳng (flat)

Kiểu dữ liệu

Đa dạng

Chủ yếu text

Kích thước

Lớn hơn

Nhỏ hơn

Dễ đọc

Trung bình

Cao

Sử dụng

API, Config

Data export, Excel

13. Tips và Best Practices

1. Luôn dùng encoding utf-8

2. Xử lý exception

3. Dùng indent cho dễ đọc

4. ensure_ascii=False cho tiếng Việt

14. Lỗi thường gặp

Lỗi 1: Quên encoding

Lỗi 2: Nhầm dumps và dump

Lỗi 3: JSON không hợp lệ

Last updated