Độ bền dữ liệu Python - Mô-đun JSON
JSON là viết tắt của JavaScript Object Notation. Đây là một định dạng trao đổi dữ liệu nhẹ. Nó là một định dạng văn bản đa nền tảng và độc lập với ngôn ngữ, được hỗ trợ bởi nhiều ngôn ngữ lập trình. Định dạng này được sử dụng để trao đổi dữ liệu giữa máy chủ web và máy khách.
Định dạng JSON tương tự như dưa chua. Tuy nhiên, tuần tự hóa pickle là đặc trưng của Python trong khi định dạng JSON được thực hiện bởi nhiều ngôn ngữ do đó đã trở thành tiêu chuẩn chung. Chức năng và giao diện của mô-đun json trong thư viện chuẩn của Python tương tự như các mô-đun pickle và marshal.
Cũng giống như trong mô-đun dưa chua, mô-đun json cũng cung cấp dumps() và loads() hàm để tuần tự hóa đối tượng Python thành chuỗi được mã hóa JSON và dump() và load() các hàm ghi và đọc các đối tượng Python được tuần tự hóa đến / từ tệp.
dumps() - Hàm này chuyển đổi đối tượng sang định dạng JSON.
loads() - Hàm này chuyển đổi một chuỗi JSON trở lại đối tượng Python.
Ví dụ sau minh họa cách sử dụng cơ bản của các hàm này:
import json
data=['Rakesh',{'marks':(50,60,70)}]
s=json.dumps(data)
json.loads(s)
Hàm dumps () có thể nhận đối số sort_keys tùy chọn. Theo mặc định, nó là False. Nếu được đặt thành True, các khóa từ điển sẽ xuất hiện theo thứ tự được sắp xếp trong chuỗi JSON.
Hàm dumps () có một tham số tùy chọn khác được gọi là thụt lề, nhận một số làm giá trị. Nó quyết định độ dài của mỗi đoạn biểu diễn được định dạng của chuỗi json, tương tự như kết quả in.
Mô-đun json cũng có API hướng đối tượng tương ứng với các chức năng trên. Có hai lớp được định nghĩa trong mô-đun - JSONEncoder và JSONDecoder.
JSONEncoder lớp
Đối tượng của lớp này là bộ mã hóa cho cấu trúc dữ liệu Python. Mỗi kiểu dữ liệu Python được chuyển đổi theo kiểu JSON tương ứng như được hiển thị trong bảng sau:
Python | JSON |
---|---|
Dict | vật |
danh sách, tuple | mảng |
Str | chuỗi |
int, float, int- & float-Enums | con số |
Thật | thật |
Sai | sai |
không ai | vô giá trị |
Lớp JSONEncoder được khởi tạo bởi hàm tạo JSONEncoder (). Các phương thức quan trọng sau được định nghĩa trong lớp mã hóa:
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | encode() tuần tự hóa đối tượng Python thành định dạng JSON |
2 | iterencode() Mã hóa đối tượng và trả về một trình lặp tạo ra dạng được mã hóa của từng mục trong đối tượng. |
3 | indent Xác định mức thụt lề của chuỗi mã hóa |
4 | sort_keys là đúng hoặc sai để làm cho các khóa xuất hiện theo thứ tự được sắp xếp hoặc không. |
5 | Check_circular nếu Đúng, hãy kiểm tra tham chiếu vòng tròn trong đối tượng loại vùng chứa |
Ví dụ sau mã hóa đối tượng danh sách Python.
e=json.JSONEncoder()
e.encode(data)
Lớp JSONDecoder
Đối tượng của lớp này giúp giải mã trong chuỗi json trở lại cấu trúc dữ liệu Python. Phương thức chính trong lớp này là decode (). Mã ví dụ sau truy xuất đối tượng danh sách Python từ chuỗi mã hóa ở bước trước.
d=json.JSONDecoder()
d.decode(s)
Mô-đun json định nghĩa load() và dump() các hàm để ghi dữ liệu JSON vào một tệp như đối tượng - có thể là tệp đĩa hoặc luồng byte và đọc lại dữ liệu từ chúng.
đổ ()
Hàm này ghi dữ liệu đối tượng JSONed Python vào một tệp. Tệp phải được mở bằng chế độ 'w'.
import json
data=['Rakesh', {'marks': (50, 60, 70)}]
fp=open('json.txt','w')
json.dump(data,fp)
fp.close()
Mã này sẽ tạo 'json.txt' trong thư mục hiện tại. Nó hiển thị các nội dung như sau:
["Rakesh", {"marks": [50, 60, 70]}]
tải ()
Hàm này tải dữ liệu JSON từ tệp và trả về đối tượng Python từ nó. Tệp phải được mở với quyền đọc (nên có chế độ 'r').
Example
fp=open('json.txt','r')
ret=json.load(fp)
print (ret)
fp.close()
Output
['Rakesh', {'marks': [50, 60, 70]}]
Các json.tool mô-đun cũng có giao diện dòng lệnh xác thực dữ liệu trong tệp và in đối tượng JSON theo cách định dạng đẹp.
C:\python37>python -m json.tool json.txt
[
"Rakesh",
{
"marks": [
50,
60,
70
]
}
]