JSON trong Python là một định dạng chuẩn lấy cảm hứng từ JavaScript để trao đổi dữ liệu và truyền dữ liệu dưới dạng định dạng văn bản qua mạng. Nói chung, JSON ở định dạng chuỗi hoặc văn bản. Nó có thể được sử dụng bởi API và cơ sở dữ liệu và nó đại diện cho các đối tượng dưới dạng cặp tên/giá trị. JSON là viết tắt của Ký hiệu đối tượng JavaScript
Cú pháp JSON của Python
JSON được viết dưới dạng cặp khóa và giá trị
{ "Key": "Value", "Key": "Value", }
JSON rất giống với từ điển Python. Python hỗ trợ JSON và nó có một thư viện sẵn có dưới dạng JSON
Thư viện JSON trong Python
Các mô-đun bên ngoài của 'marshal' và 'pickle' của Python duy trì một phiên bản của thư viện JSON Python. Làm việc với JSON trong Python để thực hiện các hoạt động liên quan đến JSON như mã hóa và giải mã, trước tiên bạn cần nhập thư viện JSON và cho điều đó trong. tập tin py,
import json
Các phương thức sau có sẵn trong mô-đun JSON Python
MethodDescriptiondumps[] mã hóa thành các đối tượng JSONdump[] mã hóa chuỗi ghi trên fileloads[] Giải mã JSON stringload[] Giải mã trong khi đọc tệp JSONBạn sẽ học được gì
- JSON trong Python là gì?
- Thư viện JSON trong Python
- Python sang JSON [Mã hóa]
- JSON sang Python [Giải mã]
- Mã hóa đối tượng phức tạp của Python
- Giải mã đối tượng JSON phức tạp trong Python
- Tổng quan về JSONEncoder lớp tuần tự hóa JSON
- Tổng quan về lớp giải tuần tự hóa JSON JSONDecoder
- Ngoại lệ liên quan đến Thư viện JSON trong Python
- Số vô hạn và NaN trong Python
- Khóa lặp lại trong Chuỗi JSON
- CLI [Giao diện dòng lệnh] với JSON trong Python
- Ưu điểm của JSON trong Python
- Hạn chế triển khai của JSON trong Python
- Bảng gian lận JSON của Python
Python sang JSON [Mã hóa]
Thư viện JSON của Python theo mặc định thực hiện việc dịch các đối tượng Python thành các đối tượng JSON
PythonJSONdictObjectlistArrayunicodeStringnumber – int, longnumber – intfloatnumber – realTrueTrueFalseFalseNoneNullChuyển đổi dữ liệu Python sang JSON được gọi là hoạt động Mã hóa. Việc mã hóa được thực hiện với sự trợ giúp của phương thức thư viện JSON – dumps[]
Kết xuất JSON[] trong Python
json. dumps[] trong Python là một phương thức chuyển đổi các đối tượng từ điển của Python thành định dạng dữ liệu chuỗi JSON. Nó rất hữu ích khi các đối tượng được yêu cầu ở định dạng chuỗi cho các hoạt động như phân tích cú pháp, in, v.v.
Bây giờ hãy thực hiện json đầu tiên của chúng tôi. kết xuất ví dụ mã hóa bằng 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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]
đầu ra
{"person": {"name": "Kenn", "sex": "male", "age": 28}}]
Hãy xem một ví dụ về Python ghi JSON vào tệp để tạo tệp JSON của từ điển bằng cách sử dụng cùng hàm dump[]
# here we create new data_file.json file with write mode using file i/o operation with open['json_file.json', "w"] as file_write: # write json data into file json.dump[person_data, file_write]
đầu ra
Không có gì để hiển thị...Trong hệ thống của bạn json_file. json được tạo. Bạn có thể kiểm tra tệp đó như được hiển thị trong ví dụ ghi JSON vào tệp Python bên dưới
JSON sang Python [Giải mã]
Giải mã chuỗi JSON được thực hiện với sự trợ giúp của phương thức sẵn có json. tải [] và json. load[] của thư viện JSON trong Python. Ở đây bảng dịch hiển thị ví dụ về các đối tượng JSON sang các đối tượng Python rất hữu ích để thực hiện giải mã trong Python của chuỗi JSON
JSONPythonObjectdictArraylistStringunicodenumber – intnumber – int, longnumber – realfloatTrueTrueFalseFalseNullNoneHãy cùng xem một ví dụ giải mã JSON Python phân tích cú pháp cơ bản với sự trợ giúp của json. chức năng tải,
import json # json library imported # json data string person_data = '{ "person": { "name": "Kenn", "sex": "male", "age": 28}}' # Decoding or converting JSON format in dictionary using loads[] dict_obj = json.loads[person_data] print[dict_obj] # check type of dict_obj print["Type of dict_obj", type[dict_obj]] # get human object details print["Person......", dict_obj.get['person']]
đầu ra
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}} Type of dict_obj Person..... {'name': 'John', 'sex': 'male'}
Giải mã tệp JSON hoặc Phân tích cú pháp tệp JSON trong Python
Bây giờ, chúng ta sẽ tìm hiểu cách đọc tệp JSON trong Python với ví dụ JSON phân tích cú pháp Python
GHI CHÚ. Giải mã tệp JSON là thao tác liên quan đến Tệp Nhập/Xuất [I/O]. Tệp JSON phải tồn tại trên hệ thống của bạn tại vị trí được chỉ định mà bạn đề cập trong chương trình của mình
Python đọc tệp JSON Ví dụ
import json #File I/O Open function for read data from JSON File with open['X:/json_file.json'] as file_object: # store file data in object data = json.load[file_object] print[data]
Ở đây dữ liệu là một đối tượng từ điển của Python như được hiển thị trong ví dụ về tệp JSON đã đọc ở trên
đầu ra
________số 8Mã hóa nhỏ gọn trong Python
Khi cần giảm kích thước tệp JSON của mình, bạn có thể sử dụng mã hóa thu gọn trong Python
Thí dụ,
import json # Create a List that contains dictionary lst = ['a', 'b', 'c',{'4': 5, '6': 7}] # separator used for compact representation of JSON. # Use of ',' to identify list items # Use of ':' to identify key and value in dictionary compact_obj = json.dumps[lst, separators=[',', ':']] print[compact_obj]
đầu ra
import json0
Định dạng mã JSON [Bản in đẹp]
- Mục đích là để viết mã được định dạng tốt cho sự hiểu biết của con người. Với sự trợ giúp của bản in đẹp, bất kỳ ai cũng có thể dễ dàng hiểu mã
Thí dụ
import json1
đầu ra
import json2
Để hiểu rõ hơn về điều này, hãy thay đổi thụt lề thành 40 và quan sát đầu ra-
Đặt hàng mã JSON
thuộc tính sort_keys trong đối số của hàm kết xuất Python sẽ sắp xếp khóa trong JSON theo thứ tự tăng dần. Đối số sort_keys là một thuộc tính Boolean. Khi đó là sự sắp xếp thực sự được cho phép nếu không thì không. Hãy hiểu với ví dụ sắp xếp chuỗi Python thành JSON
Thí dụ,
import json3
đầu ra
import json4
Như bạn có thể quan sát, tuổi của chìa khóa, ô tô, trẻ em, v.v. được sắp xếp theo thứ tự tăng dần
Mã hóa đối tượng phức tạp của Python
Một đối tượng Complex có hai phần khác nhau đó là
- phần thực
- phần ảo
Thí dụ. 3 +2i
Trước khi thực hiện mã hóa một đối tượng phức tạp, bạn cần kiểm tra một biến có phức tạp hay không. Bạn cần tạo một hàm kiểm tra giá trị được lưu trữ trong một biến bằng cách sử dụng một phương thức thể hiện
Hãy tạo hàm cụ thể để kiểm tra đối tượng phức tạp hay đủ điều kiện để mã hóa
import json5
đầu ra
import json6
Giải mã đối tượng JSON phức tạp trong Python
Để giải mã đối tượng phức tạp trong JSON, hãy sử dụng tham số object_hook để kiểm tra chuỗi JSON có chứa đối tượng phức tạp hay không. Hãy hiểu với chuỗi thành JSON Python Ví dụ,
import json7
đầu ra
import json8
Tổng quan về JSONEncoder lớp tuần tự hóa JSON
Lớp JSONEncoder được sử dụng để tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện mã hóa. Nó chứa ba phương pháp mã hóa khác nhau đó là
- default[o] – Được triển khai trong lớp con và trả về đối tượng tuần tự hóa cho đối tượng o
- encode[o] – Giống như kết xuất JSON Phương thức Python trả về chuỗi JSON của cấu trúc dữ liệu Python
- iterencode[o] – Biểu diễn từng chuỗi một và mã hóa đối tượng o
Với sự trợ giúp của phương thức encode[] của lớp JSONEncoder, chúng ta cũng có thể mã hóa bất kỳ đối tượng Python nào như trong ví dụ về bộ mã hóa Python JSON bên dưới
import json9
đầu ra
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]0
Tổng quan về lớp giải tuần tự hóa JSON JSONDecoder
Lớp JSONDecoder được sử dụng để giải tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện giải mã. Nó chứa ba phương pháp giải mã khác nhau đó là
- default[o] – Được triển khai trong lớp con và trả về đối tượng được giải tuần tự hóa o đối tượng
- giải mã [o] - Giống như json. phương thức loading[] trả về cấu trúc dữ liệu Python của chuỗi hoặc dữ liệu JSON
- raw_decode[o] – Trình bày từng từ điển Python một và giải mã đối tượng o
Với sự trợ giúp của phương thức decode[] của lớp JSONDecoder, chúng ta cũng có thể giải mã chuỗi JSON như trong ví dụ về bộ giải mã JSON Python bên dưới
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]1
đầu ra
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]2
Giải mã dữ liệu JSON từ URL. Ví dụ thực tế cuộc sống
Chúng tôi sẽ tìm nạp dữ liệu của CityBike NYC [Hệ thống chia sẻ xe đạp] từ URL được chỉ định [https. // nguồn cấp dữ liệu. citibikenyc. com/trạm/trạm. json] và chuyển đổi sang định dạng từ điển
Python tải JSON từ tệp Ví dụ
GHI CHÚ. - Đảm bảo thư viện yêu cầu đã được cài đặt trong Python của bạn, Nếu chưa, hãy mở Terminal hoặc CMD và gõ
- [Đối với Python 3 trở lên] yêu cầu cài đặt pip3
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]3
đầu ra
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]4
Ngoại lệ liên quan đến Thư viện JSON trong Python
- lớp json. JSONDecoderError xử lý ngoại lệ liên quan đến hoạt động giải mã. và nó là một lớp con của ValueError
- Ngoại lệ – json. JSONDecodeError[tin nhắn, tài liệu]
- Các tham số của Ngoại lệ là,
- msg – Thông báo lỗi không được định dạng
- tài liệu – Tài liệu JSON được phân tích cú pháp
- pos – bắt đầu lập chỉ mục tài liệu khi không thành công
- lineno – dòng không hiển thị tương ứng với vị trí
- dấu hai chấm – cột không tương ứng với pos
Python tải JSON từ tệp Ví dụ
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]5
Số vô hạn và NaN trong Python
Định dạng trao đổi dữ liệu JSON [RFC – Yêu cầu nhận xét] không cho phép Giá trị vô hạn hoặc Giá trị Nan nhưng không có hạn chế trong Thư viện Python- JSON để thực hiện hoạt động liên quan đến Giá trị vô hạn và Giá trị Nan. Nếu JSON nhận được kiểu dữ liệu INFINITE và Nan thì nó đã chuyển đổi nó thành chữ
Thí dụ,
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]6
đầu ra
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]7
Khóa lặp lại trong Chuỗi JSON
RFC chỉ định tên khóa phải là duy nhất trong đối tượng JSON, nhưng không bắt buộc. Thư viện JSON của Python không đưa ra ngoại lệ đối với các đối tượng lặp lại trong JSON. Nó bỏ qua tất cả các cặp khóa-giá trị lặp lại và chỉ xem xét cặp khóa-giá trị cuối cùng trong số chúng
- Thí dụ,
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]8
đầu ra
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} ] } # sorting result in asscending order by keys: sorted_string = json.dumps[x, indent=4, sort_keys=True] print[sorted_string]9
CLI [Giao diện dòng lệnh] với JSON trong Python
json. công cụ cung cấp giao diện dòng lệnh để xác thực cú pháp in đẹp của JSON. Hãy xem một ví dụ về CLI