Trong bài học hôm nay, chúng ta sẽ tìm hiểu về JSON trong Python. Chúng ta sẽ biết về mô-đun JSON trong Python và chuyển đổi đối tượng Python thành dữ liệu JSON và ngược lại. Hơn nữa, chúng ta cũng sẽ tìm hiểu cách định dạng dữ liệu JSON sau khi chuyển đổi đối tượng Python thành JSON.
JSON trong Python là gì?
JSON là từ viết tắt của ký hiệu đối tượng JavaScript. Python có gói tích hợp có tên ‘json’ để hỗ trợ làm việc với JSON trong Python. JSON về cơ bản được sử dụng để mã hóa và giải mã dữ liệu. Quá trình mã hóa dữ liệu JSON được gọi là tuần tự hóa vì nó liên quan đến việc chuyển đổi dữ liệu thành một chuỗi byte có thể được lưu trữ và truyền giữa các máy chủ và ứng dụng web. Vì tuần tự hóa là mã hóa dữ liệu, chúng ta có thể đoán thuật ngữ được sử dụng để giải mã.
Vd: JSON được cho là có thể đọc được bởi bất kỳ ai sử dụng ngôn ngữ kiểu C và Python là ngôn ngữ kiểu C.
{ "FirstName" : "Jane" , "lastName" : "Doe" , "like" : [ "chạy" , "lặn trên bầu trời" , "hát" ], "age" : 35 , "children" : [ { "FirstName" : " Alice " , "age" : 6 }, { "FirstName" : " Bob " , "age" : 8 } ] }
Như bạn có thể thấy, JSON hỗ trợ các kiểu nguyên thủy, như chuỗi và số, cũng như các danh sách và đối tượng lồng nhau. Nó trông giống như một từ điển Python.
Python hỗ trợ JSON nguyên bản!
Python đi kèm với gói tích hợp được gọi là json
, thư viện này cung cấp cho chũng ta những công cụ để làm việc cũng như để mã hóa và giải mã dữ liệu JSON.
import json
Các phương thức sau đây có sẵn trong mô-đun JSON
Phương thức | Miêu tả |
dumps() | Mã hóa thành các đối tượng JSON |
dump() | Mã hóa chuỗi được ghi trong tệp |
loads() | Giải mã chuỗi JSON |
load() | Giải mã trong khi đọc tệp JSON |
Mã hóa dữ liệu Python sang JSON
Quá trình mã hóa JSON thường được gọi là tuần tự hóa . Thuật ngữ này đề cập đến việc chuyển đổi dữ liệu thành một chuỗi byte (do đó nối tiếp ) sẽ được lưu trữ hoặc truyền qua mạng
Các đối tượng Python được dịch sang JSON theo một chuyển đổi khá trực quan.
Python | JSON |
---|---|
dict | object |
list , tuple | array |
str | string |
int , long ,float | number |
True | true |
False | false |
None | null |
Ví dụ về mã hóa dữ liệu
Ví dụ bạn đang làm việc với một đối tượng Python giống như thế này:
data = { "President" : { "name" : "Nguyen Duy Hieu" , "age" : "20" } }
Sử dụng context manager mà mình đã nhắc tới trong phần mở file ở bài trước, bạn có thể tạo một tệp được gọi data_file.json
và mở nó trong chế độ ghi. (Các tệp JSON kết thúc với đuôi .json
).
#ví dụ về json trong python import json data = { "President" : { "name" : "Nguyen Duy Hieu" , "age" : "20" } } # sử dụng context manager để tạo tệp .json with open("data.json", "w") as write_file: json.dump(data, write_file)
Lưu ý rằng dump()
có hai đối số vị trí: (1) đối tượng dữ liệu sẽ được mã hóa và (2) đối tượng giống như tệp mà các byte sẽ được ghi.
Hoặc nếu bạn muốn làm việc luôn với JSON mà không cần tạo ra một file riêng bạn có thể dử dụng dumps()
. dumps()
sẽ ghi dữ liệu vào một đối tượng str
.
data_json = dumps(data)
Một số đối số thường dùng
Indent
Bạn có thể sử dụng indent
để chỉ định kích thước thụt đầu dòng. Kiểm tra sự khác biệt cho chính bạn bằng cách sử dụng data
mà chúng tôi đã nói ở trên và chạy các lệnh sau
print(json.dumps(data)) print(json.dumps(data, indent=4))
kết quả:
{"President": {"name": "Nguyen Duy Hieu", "age": "20"}} { "President": { "name": "Nguyen Duy Hieu", "age": "20" } }
Sort keys
Nếu sort_keys là đúng (mặc định False
:), thì đầu ra của từ điển sẽ được sắp xếp theo khóa.
#ví dụ về json trong python import json x = { "name": "Ken", "age": 45, "married": True, "children": ("Alice", "Bob"), "pets": [ 'Dog' ], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ], } # sắp xếp sorted_string = json.dumps(x, indent=4, sort_keys=True) print(sorted_string)
kêt quả:
{ "age": 45, "cars": [ { "model": "Audi A1", "mpg": 15.1 }, { "model": "Zeep Compass", "mpg": 18.1 } ], "children": [ "Alice", "Bob" ], "married": true, "name": "Ken", "pets": [ "Dog" ] }
Giải nén JSON
Trong thư viện json
, bạn sẽ dùng load()
và loads()
để biến dữ liệu được mã hóa JSON thành các đối tượng Python.
Cũng giống như mã hóa, có một bảng chuyển đổi đơn giản:
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (thực tế) | float |
true | True |
false | False |
null | None |
Chuyển đổi này không phải là một nghịch đảo với bảng mã hóa. Điều đó về cơ bản có nghĩa là nếu bạn mã hóa một đối tượng và sau đó giải mã lại nó sau đó, bạn có thể không nhận được chính xác cùng một đối tượng.
ví dụ đơn giản nhất sẽ là mã hóa một tuple
và lấy lại một list
sau khi giải mã:
import json data = (8, 1,2.2) # Mã hóa encoded_hand = json.dumps(data) # giải mã decoded_hand = json.loads(encoded_hand) #lấy kiểu dữ liệu của data print(type(data)) #lấy kiểu dữ liệu sau khi mã hóa print(type(encoded_hand)) #lấy kiểu dữ liệu sau khi giải mã print(type(decoded_hand))
kết quả
<class 'tuple'> <class 'str'> <class 'list'>
Bạn có thể thấy khi mã hóa một tuple
thì ta lại được một str
, còn sau khi giải mã nó lại được một list
.
Một ví dụ giải mã đơn giản
Lần này, chúng ta sẽ giải mã file data.json
mà lúc nãy chúng ta đã mà hóa nó. Bạn vẫn sẽ sử dụng context manager, nhưng lần này bạn sẽ mở ra data.json
chế độ đọc hiện có .
import json # giải mã file data.json with open("data.json", "r") as read_file: encode = json.load(read_file) print(encode)
kết quả:
{'President': {'name': 'Nguyen Duy Hieu', 'age': '20'}}
Để lại một bình luận