JSON là viết tắt của ký hiệu đối tượng JavaScript. Nó không chỉ nhẹ mà còn dễ đọc và viết cho con người. Tương tự, máy móc thấy dễ phân tích và tạo ra. Phân tích cú pháp JSON là vô cùng quan trọng khi làm việc với dữ liệu từ API, các tệp cấu hình hoặc các nguồn thông tin được lưu trữ khác cho bất kỳ nhà phát triển Python nào. Bài viết này đưa bạn qua các quy trình cơ bản để phân tích cú pháp JSON bằng mô -đun Python từ JSON.
JSON đại diện cho dữ liệu dưới dạng các cặp giá trị khóa, tương tự như từ điển Python. Đây là một ví dụ cơ bản về đối tượng JSON:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
Đối tượng JSON này bao gồm một chuỗi, một số, boolean và một mảng. Hiểu cấu trúc này là cơ bản để phân tích và điều khiển dữ liệu JSON trong Python.
Mô -đun JSON của Python làm cho nó đơn giản để phân tích các chuỗi và tệp JSON. Mô -đun này bao gồm các phương thức như json.loads () để đọc json từ chuỗi và json.load () để đọc json từ một tệp. Ngược lại, json.dumps () và json.dump () được sử dụng để viết json vào một chuỗi và một tệp, tương ứng.
Có một số cách để đọc dữ liệu JSON, mà chúng ta sẽ xem xét tiếp theo.
Để đọc dữ liệu JSON từ một chuỗi, hãy sử dụng phương thức json.Loads ():
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)
print(data)
Đầu ra:
Để đọc dữ liệu JSON từ một tệp, hãy sử dụng phương thức JSON.LOAD ():
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Đầu ra:
Dưới đây là một số cách khác nhau để viết dữ liệu JSON:
Để ghi dữ liệu JSON vào một chuỗi, hãy sử dụng phương thức json.dumps ():
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
json_string = json.dumps(data)
print(json_string)
Đầu ra:
Để ghi dữ liệu JSON vào một tệp, hãy sử dụng phương thức json.dump ():
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
Các đối tượng JSON lồng nhau là phổ biến khi làm việc với các cấu trúc dữ liệu phức tạp hơn. Python có thể dễ dàng xử lý các cấu trúc lồng nhau này.
import json
nested_json_string = '''
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "Wonderland"
}
}
'''
data = json.loads(nested_json_string)
print(data['address']['city'])
Đầu ra:
Đôi khi, bạn cần chuyển đổi các đối tượng Python tùy chỉnh thành JSON. Điều này đòi hỏi một bộ mã hóa tùy chỉnh.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
class StudentEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Student):
return obj.__dict__
return super().default(obj)
student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)
Đầu ra:
Tương tự, để giải mã dữ liệu JSON thành các đối tượng Python tùy chỉnh, bạn cần một trình giải mã tùy chỉnh.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
def student_decoder(dct):
return Student(dct['name'], dct['age'], dct['is_student'])
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)
Đầu ra:
Làm việc với dữ liệu JSON có thể dẫn đến một số lỗi phổ biến, đặc biệt là khi phân tích cú pháp, tạo hoặc truy cập dữ liệu JSON. Dưới đây là một số trong những cái phổ biến nhất:
Một lỗi phổ biến khi phân tích cú pháp JSON đang gặp phải định dạng JSON không hợp lệ. JSON yêu cầu trích dẫn gấp đôi xung quanh các khóa và giá trị chuỗi, và làm tổ đúng giá đỡ và niềng răng.
import json
invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
print(f"Invalid JSON format: {e}")
Đầu ra:
Khi phân tích dữ liệu JSON, bạn có thể gặp các khóa bị thiếu. Sử dụng phương thức GET để cung cấp giá trị mặc định nếu thiếu khóa.
import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)
Sử dụng mô -đun PDB để đặt các điểm dừng và gỡ lỗi mã phân tích cú pháp JSON của bạn.
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
Xóa web thường liên quan đến việc trích xuất dữ liệu từ các API Web trả về các phản hồi JSON. Dưới đây là một ví dụ nhỏ gọn sử dụng thư viện yêu cầu và https://httpbin.org/anything endpoint.
Đầu tiên, đảm bảo bạn đã cài đặt thư viện yêu cầu:
pip install requests
Mã này nhập các yêu cầu cho các yêu cầu HTTP và JSON để xử lý dữ liệu JSON. Nó gửi yêu cầu GET đến URL mục tiêu bằng cách sử dụng các yêu cầu.Get (URL) và phân tích phản hồi JSON với phản hồi.json (), biến nó thành từ điển Python. Chúng tôi rút ra và in dữ liệu cụ thể như tiêu đề, tác nhân người dùng, nguồn gốc và URL.
Mã chứa xử lý lỗi mạnh; Nó nắm bắt được json.jsondecodeError khi xảy ra lỗi giải mã JSON và KeyError khi không có khóa cụ thể, do đó làm cho chương trình được bảo vệ khỏi ‘không có sự cố dữ liệu. Do đó, sự mạnh mẽ của mã như vậy cho phép nó xử lý các tác vụ quét web thực sự một cách hoàn hảo.
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# Trích xuất dữ liệu cụ thể từ phản hồi JSON
headers = data['headers']
user_agent = headers.get('User-Agent', 'N/A')
origin = data.get('origin', 'N/A')
url = data.get('url', 'N/A')
print(f"User Agent: {user_agent}")
print(f"Origin: {origin}")
print(f"URL: {url}")
except json.JSONDecodeError:
print("Error decoding JSON response")
except KeyError as e:
print(f"Key error: {e} not found in the JSON response")
Mỗi lập trình viên Python phải biết cách phân tích cú pháp JSON. Với mô -đun JSON và cách tốt nhất để thực hiện nó được làm nổi bật bởi hướng dẫn này, bạn sẽ có thể đọc, viết và gỡ lỗi dữ liệu JSON đủ nhanh. Điều đó ngụ ý bạn sẽ thường xuyên kiểm tra mã của mình và sử dụng các công cụ chính xác và hầu hết các tính năng hiện tại có sẵn trong Python cho các kỹ năng xử lý JSON tốt hơn.
Khi thực hiện quét web, người ta thấy phân tích cú pháp JSON là quan trọng, xem xét thực tế là dữ liệu được lấy từ API Web thường xuất hiện dưới dạng JSON bên cạnh, bạn có thể trích xuất thông tin từ các nguồn web khác nhau một cách hiệu quả, nếu bạn có thể phân tích và thao tác dữ liệu JSON JSON một cách tốt.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bình luận: 0