Cách đọc và ghi tệp Json bằng Python

How Read Write Json Files Python



Bài viết này sẽ giải thích cách xử lý các tệp và dữ liệu JSON trong ngôn ngữ lập trình Python. Python đi kèm với một mô-đun json tích hợp giúp xử lý dữ liệu JSON dễ dàng và đơn giản.

Về JSON

JSON (JavaScript Object Notation) là một định dạng tệp và tiêu chuẩn lưu trữ dữ liệu sử dụng các cặp khóa-giá trị để lưu trữ và trao đổi dữ liệu. Đây là định dạng trao đổi dữ liệu được sử dụng rộng rãi nhất, thường thấy trong các API RESTful, cơ sở dữ liệu nhẹ, tệp cấu hình và phần mềm ngoại tuyến hoặc trực tuyến khác cần lưu trữ, truy xuất và trao đổi dữ liệu. Hầu hết các ngôn ngữ lập trình bao gồm các thư viện để phân tích cú pháp và ghi dữ liệu JSON theo mặc định và JSON là một định dạng dữ liệu bất khả tri của ngôn ngữ lập trình. Các giá trị được lưu trữ trong tệp JSON hoặc tải trọng thường chứa chuỗi, số và kiểu dữ liệu có thể tuần tự hóa như danh sách (mảng).







Từ điển JSON và Python

Dữ liệu JSON trong python được chuyển đổi thành một đối tượng từ điển bằng cách sử dụng phương thức tải. Người ta thường thấy rằng một số người đánh đồng dữ liệu json và một từ điển python, vì cú pháp để xác định cả hai đều gần giống nhau. Tuy nhiên, dữ liệu json không là gì ngoài một chuỗi văn bản được cấu trúc theo một cú pháp cứng nhắc trong khi từ điển python là một đối tượng cấu trúc dữ liệu được lưu trữ trong bộ nhớ. Nếu bạn muốn lưu trữ dữ liệu từ điển trong một tệp văn bản hoặc gửi nó đến một chương trình không phải python khác, trước tiên bạn sẽ phải chuyển đổi nó thành một chuỗi văn bản (byte). Chuỗi văn bản được kết xuất / chuyển đổi này được định nghĩa theo cú pháp chuẩn của JSON và quá trình chuyển đổi từ điển python thành chuỗi tương thích với json được gọi là tuần tự hóa.



Đọc và bán dữ liệu JSON bằng Python

Dữ liệu JSON có thể được truy xuất dưới dạng phản hồi từ máy chủ, đọc từ tệp, cắt từ các tham số truy vấn URL, v.v. Bài viết này sẽ chủ yếu tập trung vào việc đọc dữ liệu json từ một tệp được lưu trữ cục bộ. Giả sử rằng tệp test.json chứa dữ liệu sau:



{'codename': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}

Để đọc tệp test.json trong python, bạn có thể sử dụng mã bên dưới:





nhập khẩujson

với mở ra ('test.json') nhưNS:
dữ liệu=json.trọng tải(NS)

bãi rác=json.bãi rác(dữ liệu)

in (dữ liệu)
in (kiểu(dữ liệu))
in (bãi rác)
in (kiểu(bãi rác))

Dòng đầu tiên trong đoạn mã trên nhập mô-đun json. Trong dòng tiếp theo, với open được sử dụng để đọc nội dung tệp một cách an toàn. Trong khối with open, phương thức json.load được sử dụng để đọc và lưu trữ nội dung tệp trong biến dữ liệu. Dữ liệu được tải ở bước trước được chuyển đổi trở lại thành chuỗi json bằng phương thức json.dump. Chạy đoạn mã trên sẽ hiển thị kết quả sau:

{'mật danh':'Eoan Ermine', 'phiên bản':'Ubuntu 19.10'}
<lớp 'dict'>
{'mật danh':'Eoan Ermine', 'phiên bản':'Ubuntu 19.10'}
<lớp 'str'>

Lưu ý trong đầu ra ở trên rằng phương thức json.load đọc dữ liệu json thô vào từ điển python trong khi phương thức json.dumps chuyển đổi từ điển thành một chuỗi tương thích với cấu trúc JSON. Sau khi một đối tượng JSON đã được chuyển đổi thành một đối tượng từ điển python, bạn có thể sử dụng các phương thức từ điển python tích hợp sẵn để xử lý dữ liệu. Ví dụ trên khá cơ bản và không bao gồm các mảng trong dữ liệu JSON hoặc các giá trị lồng nhau. Tuy nhiên, trong python, bạn có thể xử lý các giá trị này giống như bất kỳ từ điển và danh sách lồng nhau nào khác.



Sắp xếp và in ấn đẹp dữ liệu JSON

Phương thức json.dump hỗ trợ một số tham số tùy chọn để sắp xếp các khóa và in kết quả đầu ra để cải thiện khả năng đọc.

nhập khẩujson

với mở ra ('test.json') nhưNS:
dữ liệu=json.trọng tải(NS)

bãi rác=json.bãi rác(dữ liệu,sort_keys=Thật,thụt vào=4)
in (bãi rác)

Đoạn mã trên sẽ hiển thị kết quả sau:

{
'mật danh': 'Eoan Ermine',
'phiên bản': 'Ubuntu 19.10'
}

Chuyển đổi loại dữ liệu

Danh sách dưới đây minh họa cách các giá trị JSON được chuyển đổi thành các đối tượng python và ngược lại.

JSON Python
dây P
con số int hoặc float
đúng sai Đúng sai
vô giá trị Không có
mảng danh sách
sự vật mệnh lệnh

Mô-đun dòng lệnh Json.tool

Python bao gồm một tiện ích dòng lệnh đẹp mắt json.tool có thể được sử dụng để xác thực và in các chuỗi và tệp JSON đẹp mắt.

$ echo'{' tên mã ':' Eoan Ermine ',' phiên bản ':' Ubuntu 19.10 '}'| python3 -m json.dụng cụ

Chạy lệnh trên sẽ hiển thị cho bạn kết quả sau:

{
'mật danh': 'Eoan Ermine',
'phiên bản': 'Ubuntu 19.10'
}

Bạn cũng có thể sử dụng json.tool với các tệp JSON. Thay thế in_file và out_file trong lệnh dưới đây bằng các giá trị mong muốn của bạn:

$ python3 -m json.dụng cụin_file out_file

Ngoài việc in ấn, sắp xếp và xác thực dữ liệu JSON đẹp mắt, json.tool không làm bất cứ điều gì khác. Vì vậy, nếu bạn muốn thao tác bất kỳ dữ liệu JSON nào, bạn phải viết mã tùy chỉnh của riêng mình bằng cách sử dụng mô-đun JSON tích hợp sẵn.