1. JSON là gì?
Tổng quan về JSON
JSON (JavaScript Object Notation) là một định dạng nhẹ, rất hiệu quả cho việc trao đổi dữ liệu. Nó chủ yếu được sử dụng để truyền tải dữ liệu giữa các ứng dụng web và máy chủ. Mặc dù dựa trên JavaScript, JSON được hỗ trợ bởi hầu hết các ngôn ngữ lập trình. Đặc biệt, JSON đóng một vai trò rất quan trọng trong việc lấy và gửi dữ liệu thông qua API.
Cấu trúc của JSON
JSON được cấu tạo bởi các cặp khóa-giá trị, và dữ liệu được bao quanh bởi dấu ngoặc nhọn {}
. Hãy tưởng tượng một ví dụ đơn giản về dữ liệu như sau:
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Physics", "Chemistry"]
}
Cấu trúc này rất linh hoạt, có thể chứa danh sách hoặc các đối tượng lồng nhau.
2. Cách cơ bản để đọc file JSON bằng Python
Giới thiệu thư viện json
của Python
Trong Python, bạn có thể dễ dàng thao tác với các file JSON bằng cách sử dụng thư viện chuẩn json
. Không cần cài đặt bổ sung, các chức năng cơ bản liên quan đến đọc và ghi file đã được tích hợp sẵn.
Cách đọc file JSON
Chúng tôi sẽ giải thích cách đọc dữ liệu từ một file bằng cách sử dụng hàm json.load()
. Ví dụ sau đây là một đoạn code đơn giản để đọc JSON từ file và thao tác dữ liệu dưới dạng từ điển.
import json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
3. Cách đọc chuỗi JSON bằng Python
Sử dụng hàm json.loads()
Khi muốn chuyển đổi dữ liệu JSON được cung cấp dưới dạng chuỗi thành từ điển Python, bạn sử dụng hàm json.loads()
. Điều này thường được dùng khi xử lý chuỗi JSON từ các phản hồi API.
import json
json_string = '{"name": "Alice", "age": 25, "city": "Tokyo"}'
data = json.loads(json_string)
print(data)
Bằng cách này, bạn có thể dễ dàng chuyển đổi dữ liệu JSON dưới dạng chuỗi thành từ điển.
4. Lưu ý và cách xử lý lỗi khi đọc file JSON
Các lỗi thường gặp và cách khắc phục
Khi đọc file JSON, một trong những lỗi phổ biến nhất là **JSONDecodeError**. Lỗi này xảy ra khi file không đúng định dạng JSON. Điều quan trọng là phải xử lý lỗi một cách thích hợp và kiểm tra chi tiết lỗi.
import json
try:
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
except json.JSONDecodeError as e:
print(f"Lỗi đọc JSON: {e}")
Vấn đề về Encoding
Với các file JSON có chứa tiếng Việt (hoặc tiếng Nhật), cần chú ý đến bộ mã ký tự. Việc chỉ định encoding='utf-8'
sẽ giúp ngăn chặn lỗi hiển thị ký tự.
5. Xử lý dữ liệu JSON lớn một cách hiệu quả
Xử lý dữ liệu có tính đến hiệu quả bộ nhớ
Nếu đọc toàn bộ file JSON khổng lồ vào bộ nhớ cùng một lúc, bạn có thể gặp phải tình trạng thiếu bộ nhớ. Để tránh điều này, bạn nên sử dụng các thư viện streaming như ijson
.
import ijson
with open('large_file.json', 'r', encoding='utf-8') as f:
for item in ijson.items(f, 'item'):
print(item)
Bằng cách sử dụng ijson
, bạn có thể xử lý dữ liệu lớn một cách hiệu quả.
6. Cách tận dụng dữ liệu JSON sau khi chuyển đổi sang từ điển Python
Thao tác từ điển cơ bản
Khi JSON được chuyển đổi thành kiểu từ điển, việc thao tác dữ liệu trở nên rất dễ dàng. Ví dụ, bạn có thể lấy giá trị tương ứng với một khóa cụ thể hoặc thay đổi dữ liệu.
# Ví dụ thao tác dữ liệu kiểu từ điển
print(data['name']) # Hiển thị 'Alice'
data['age'] = 26 # Cập nhật giá trị
data['email'] = 'alice@example.com' # Thêm khóa và giá trị mới
7. Hướng dẫn cách ghi JSON bằng Python
Ghi vào file JSON
Để ghi dữ liệu kiểu từ điển đã được thao tác trong Python ra file dưới dạng JSON, bạn sử dụng hàm json.dump()
. Điều này cho phép bạn lưu trữ dữ liệu đã cập nhật.
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
Tùy chọn indent=4
giúp định dạng đầu ra và ensure_ascii=False
để lưu tiếng Việt (hoặc tiếng Nhật) mà không bị chuyển đổi sang mã ASCII.