Hướng dẫn chi tiết JSON và cách xử lý với Python: Đọc, Ghi & Xử lý lỗi

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.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール