Cách đọc và phân tích tệp JSON bằng Python
Tìm hiểu cách đọc, phân tích cú pháp và tải các tệp JSON trong Python bằng mô-đun json tích hợp. Làm chủ việc chuyển đổi chuỗi JSON thành từ điển và ngược lại.
Tổng quan
JSON (Ký hiệu đối tượng JavaScript) là định dạng dữ liệu phổ biến nhất cho API, tệp cấu hình và lưu trữ dữ liệu. Python đi kèm với một mô-đun `json` tích hợp giúp việc đọc, phân tích cú pháp và ghi dữ liệu JSON cực kỳ đơn giản. Vì các đối tượng JSON ánh xạ hoàn hảo tới các từ điển Python và các mảng JSON ánh xạ tới các danh sách Python nên làm việc với JSON có cảm giác tự nhiên.
Để đọc JSON từ một tệp bên ngoài, bạn sử dụng hàm `json.load()` để phân tích luồng tệp và dịch cấu trúc JSON thành các kiểu dữ liệu Python. Nếu dữ liệu JSON đã được tải vào bộ nhớ dưới dạng chuỗi, thay vào đó, bạn hãy sử dụng hàm `json.loads()` ('s' là viết tắt của chuỗi). Việc chọn đúng chức năng sẽ ngăn chặn sự cố của trình phân tích cú pháp.
Khi làm việc với JSON, cách tốt nhất là xử lý các lỗi mã hóa và định dạng tiềm ẩn. Việc sử dụng `encoding="utf-8"` trong câu lệnh `open()` sẽ bảo vệ tập lệnh của bạn khỏi bị lỗi ở các ký tự đặc biệt. Việc gói các thao tác tệp trong khối `try-ngoại trừ` bắt `json.JSONDecodeError` đảm bảo ứng dụng của bạn sẽ xuống cấp một cách nhẹ nhàng nếu tệp JSON không đúng định dạng.
Đầu ra mã & thực thi
Mã này minh họa việc viết một tệp JSON mẫu, đọc và phân tích cú pháp nó trở lại từ điển Python và xử lý chuỗi JSON.
import json
# Let's write a mock JSON file first
sample_data = {
"user": "developer123",
"skills": ["python", "javascript", "sql"],
"active": True
}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(sample_data, f, indent=4)
# 1. Reading from a JSON file (using json.load)
with open("data.json", "r", encoding="utf-8") as file:
data_from_file = json.load(file)
print("File Content type:", type(data_from_file).__name__)
print("User skill list:", data_from_file["skills"])
# 2. Reading from a JSON string (using json.loads)
json_string = '{"host": "localhost", "port": 5432, "ssl": false}'
data_from_str = json.loads(json_string)
print("\nString Content type:", type(data_from_str).__name__)
print("Database host:", data_from_str["host"])File Content type: dict
User skill list: ['python', 'javascript', 'sql']
String Content type: dict
Database host: localhostTriển khai từng bước
- Nhập mô-đun json tích hợp trong tập lệnh của bạn.
- Mở tệp JSON bằng cách sử dụng open("filename.json", "r", Encoding="utf-8") làm tệp.
- Truyền đối tượng tệp tới json.load(file) để phân tích nội dung vào từ điển Python.
- Sử dụng json.loads(string_data) nếu bạn cần phân tích chuỗi JSON thô đã được tải trong bộ nhớ.
Câu hỏi thường gặp
Sự khác biệt giữa json.load() và json.loads() là gì?
json.load() chấp nhận một đối tượng luồng giống như tệp (đọc từ đĩa), trong khi json.loads() chấp nhận một đối tượng chuỗi hoặc byte tiêu chuẩn chứa nội dung JSON (đọc từ bộ nhớ).
Làm cách nào để xử lý lỗi tuần tự hóa JSON cho các lớp tùy chỉnh?
Mô-đun json của Python không thể tuần tự hóa các phiên bản lớp tùy chỉnh theo mặc định. Trước tiên, bạn phải cung cấp một lớp bộ mã hóa tùy chỉnh mở rộng json.JSONEncode hoặc trích xuất các thuộc tính của phiên bản vào từ điển bằng phương thức trợ giúp.
Chủ đề liên quan
Tìm hiểu cách đọc tệp bằng Python. Nắm vững câu lệnh mở, dòng đọc, dòng đọc và xử lý các ngoại lệ tệp một cách an toàn.
Cách ghi vào tệp bằng PythonTìm hiểu cách viết văn bản vào tệp bằng Python. Nắm vững sự khác biệt giữa chế độ ghi ("w") và chắp thêm ("a") bằng trình quản lý bối cảnh an toàn.
Cách tạo một từ điển trong PythonTìm hiểu cách tạo từ điển bằng Python. Hiểu cú pháp bằng chữ, hàm tạo chính tả, hiểu chính tả và khởi tạo khóa-giá trị.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
I/O tệp Python
Tìm hiểu cách đọc và ghi tệp bằng Python. Làm chủ các trình quản lý open(), read(), write() và bối cảnh để xử lý các thao tác tệp một cách an toàn mà không bị rò rỉ tài nguyên.
Bảng cheat hoạt động của tệp Python
Tham khảo nhanh về đọc và ghi tệp bằng Python. Nắm vững các chế độ mở, trình quản lý bối cảnh và đọc từng dòng.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.