JSON là gì?
JSON là một định dạng chuẩn để trao đổi dữ liệu, được lấy cảm hứng từ JavaScript. Về cơ bản, JSON ở dạng chuỗi hoặc văn bản. JSON là viết tắt của Java Script Object Notation. là một định dạng chuẩn để trao đổi dữ liệu, được lấy cảm hứng từ JavaScript. Về cơ bản, JSON ở dạng chuỗi hoặc văn bản. JSON là viết tắt của Java Script Object Notation.
Cú pháp của JSON: JSON được viết dưới dạng cặp khóa và giá trị.
{
"Key1": "Value1",
"Key2": "Value2",
}
JSON rất giống với kiểu dữ liệu từ điển trong 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 'marshal' và 'pickle' của Python duy trì một phiên bản của thư viện JSON. Để thực hiện các thao tác liên quan đến JSON như mã hóa và giải mã trong Python, trước tiên bạn cần nạp thư viện JSON trong tệp .py của bạn,'marshal' và 'pickle' của Python duy trì một phiên bản của thư viện JSON. Để thực hiện các thao tác liên quan đến JSON như mã hóa và giải mã trong Python, trước tiên bạn cần nạp thư viện JSON trong tệp .py của bạn,
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 |
Trong bài này, bạn sẽ tìm hiểu về:
JSON là gì?
Thư viện JSON trong Python
Python sang JSON [Mã hóa]
JSON sang Python [Giải mã]
Giải mã tệp JSON hoặc phân tích tệp JSON trong Python
Mã hóa tối giản trong Python
Định dạng mã JSON [giúp in ra đẹp hơn]
Mã hóa đối tượng phức trong Python
Giải mã đối tượng JSON phức tạp trong Python
Tổng quan về lớp tuần tự hóa [serialization] JSON
Tổng quan về lớp giải mã [deserialization] JSON
Giải mã dữ liệu JSON từ URL: Ví dụ thực tế.
Các ngoại lệ liên quan đến thư viện JSON trong Python
Số vô hạn và số 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ế trong việc triển khai JSON trong Python
Mã cheat
Python sang JSON [Mã hóa]
JSON sang Python [Giải mã]
Giải mã tệp JSON hoặc phân tích tệp JSON trong Python | Mã hóa tối giản trong Python |
Định dạng mã JSON [giúp in ra đẹp hơn] | Mã hóa đối tượng phức trong Python |
Giải mã đối tượng JSON phức tạp trong Python | Tổng quan về lớp tuần tự hóa [serialization] JSON |
Tổng quan về lớp giải mã [deserialization] JSON | Giải mã dữ liệu JSON từ URL: Ví dụ thực tế. |
Các ngoại lệ liên quan đến thư viện JSON trong Python | Số vô hạn và số 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ế trong việc triển khai JSON trong Python |
Mã cheat | Theo mặc định, thư viện Python thực hiện dịch các đối tượng Python thành các đối tượng JSON |
Python | JSON |
Từ điển [dict]dumps[]
Đối tượngdumps[] chuyển đổi đối tượng từ điển của python thành định dạng dữ liệu dạng chuỗi JSON.
Danh sách [list]
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]
Mảng
{"person": {"name": "Kenn", "sex": "male", "age": 28}}]
unicodedump[]
# 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]
Mảng
unicode
JSON sang Python [Giải mã]
Giải mã tệp JSON hoặc phân tích tệp JSON trong Pythonloads[] & load[] của thư viện JSON trong Python. Bảng dịch dưới đây đưa ra các ví dụ về cách chuyển đổi đối tượng JSON sang đối tượng trong Python, điều này rất hữu ích trong trường hợp bạn muốn giải mã chuỗi JSON sang Python.
Mã hóa tối giản trong Python | Định dạng mã JSON [giúp in ra đẹp hơn] |
Mã hóa đối tượng phức trong Python | Giải mã đối tượng JSON phức tạp trong Python |
Tổng quan về lớp tuần tự hóa [serialization] JSON | Tổng quan về lớp giải mã [deserialization] JSON |
Giải mã dữ liệu JSON từ URL: Ví dụ thực tế. | Các ngoại lệ liên quan đến thư viện JSON trong Python |
Số vô hạn và số 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 | float |
Ưu điểm của JSON trong Python | Hạn chế trong việc triển khai JSON trong Python |
Mã cheat | Theo mặc định, thư viện Python thực hiện dịch các đối tượng Python thành các đối tượng JSON |
Python | JSON |
Từ điển [dict] json.loads[] ,
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']]
Mảng
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Type of dict_obj
Person...... {'name': 'John', 'sex': 'male'}
unicode
Chuỗi: Giải mã tệp JSON là thao tác liên quan tới nhập/xuất tệp. Tệp JSON phải tồn tại trên hệ thống ở vị trí mà bạn khai báo trong chương trình.
Số-int,long
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]
số - số nguyên
Mảng
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Mã hóa tối giản trong Python
Định dạng mã JSON [giúp in ra đẹp hơn]
Mã hóa đối tượng phức trong Python
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]
Mảng
import json
0unicode
Chuỗi
Số-int,long
import json
1Mảng
import json
2unicode
Chuỗi
Số-int,long sort_keys trong đối số của hàm dumps [] 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 kiểu Boolean. Quá trình sắp xếp được thực hiện nếu giá trị được đặt là True, và ngược lại.
Mã hóa đối tượng phức trong Python
Giải mã đối tượng JSON phức tạp trong PythonMảng
import json
4unicode
Mã hóa đối tượng phức trong Pythonn
Giải mã đối tượng JSON phức tạp trong Python
Tổng quan về lớp tuần tự hóa [serialization] JSON
Tổng quan về lớp giải mã [deserialization] JSON
Giải mã dữ liệu JSON từ URL: Ví dụ thực tế.
Các ngoại lệ liên quan đến thư viện JSON trong Python
Số vô hạn và số NaN trong Python
import json
5Đầu ra:
import json
6Giải mã đối tượng JSON phức trong Python
Để giải mã đối tượng phức 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 hay không. Ví dụ,
import json
7Đầu ra:
import json
8Tổng quan về lớp tuần tự hóa [Serialization] 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 thức mã hóa khác nhau
default[o] - Được triển khai trong lớp con và trả về đối tượng tuần tự cho đối tượng o. - Được triển khai trong lớp con và trả về đối tượng tuần tự cho đối tượng o.
encode[o] - Giống như phương thức json.dumps [], nó trả về chuỗi JSON của cấu trúc dữ liệu Python. - Giống như phương thức json.dumps [], nó 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. – 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[] thuộc lớp JSONEncoder, chúng ta cũng có thể mã hóa bất kỳ đối tượng Python nào.
import json
9Đầ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]
0Tổng quan về lớp giải mã [deserialization] JSON
Lớp JSONDecoder được sử dụng để giải mã 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
default [o] - Được triển khai trong lớp con và trả về đối tượng giải mã.- Được triển khai trong lớp con và trả về đối tượng giải mã.
decode [o] - Giống như phương thức json.loads[], nó trả về cấu trúc dữ liệu Python của chuỗi hoặc dữ liệu JSON. - Giống như phương thức json.loads[], nó trả về cấu trúc dữ liệu Python của chuỗi hoặc dữ liệu JSON.
raw_decode [o] – Biểu diễn từng từ điển Python và giải mã đối tượng o. – Biểu diễn từng từ điển Python 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.
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]
2Giải mã dữ liệu JSON từ URL: Ví dụ thực tế
Chúng ta sẽ lấy dữ liệu của CityBike NYC [Hệ thống chia sẻ xe đạp] từ URL sau [ //feeds.citibikenyc.com/stations/stations.json ] và chuyển đổi sang định dạng từ điển.
Ví dụ
LƯU Ý: - Đảm bảo thư viện yêu cầu đã được cài đặt trong Python của bạn, nếu không hãy mở cửa sổ dòng lệnh hoặc CMD và gõ
[Đối với Python 3 trở lên] pip3 install requestspip3 install requests
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]
4Các 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.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.JSONDecoderError [msg, doc]json.JSONDecoderError [msg, doc]
Các tham số của ngoại lệ là,
msg - Thông báo lỗi chưa được định dạng
doc - Tài liệu JSON được phân tích cú pháp
pos - chỉ số bắt đầu của doc khi nó thất bại
lineno – số dòng thể hiện tương ứng với pos
colon – số cột thể hiện tương ứng với pos
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]
5Số vô hạn và số 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 thư viện JSON của Python không có hạn chế nào đối với việc này. Nếu JSON nhận được kiểu dữ liệu vô hạn và NanN thì nó sẽ chuyển đổi sang dạng chữ.
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]
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]
7Số vô hạn và số 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 thư viện JSON của Python không có hạn chế nào đối với việc này. Nếu JSON nhận được kiểu dữ liệu vô hạn và NanN thì nó sẽ chuyển đổi sang dạng chữ.
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]
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]
9Số vô hạn và số 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 thư viện JSON của Python không có hạn chế nào đối với việc này. Nếu JSON nhận được kiểu dữ liệu vô hạn và NanN thì nó sẽ chuyển đổi sang dạng chữ.cung cấp giao diện dòng lệnh để xác thực cú pháp trong JSON. Hãy xem ví dụ về CLI
{"person": {"name": "Kenn", "sex": "male", "age": 28}}]
0Đầu ra:
{"person": {"name": "Kenn", "sex": "male", "age": 28}}]
1Tổng quan về lớp tuần tự hóa [Serialization] 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 thức mã hóa khác nhau
default[o] - Được triển khai trong lớp con và trả về đối tượng tuần tự cho đối tượng o.
encode[o] - Giống như phương thức json.dumps [], nó 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[] thuộc lớp JSONEncoder, chúng ta cũng có thể mã hóa bất kỳ đối tượng Python nào.
Tổng quan về lớp giải mã [deserialization] JSON
Lớp JSONDecoder được sử dụng để giải mã 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
default [o] - Được triển khai trong lớp con và trả về đối tượng giải mã.
decode [o] - Giống như phương thức json.loads[], nó trả về cấu trúc dữ liệu Python của chuỗi hoặc dữ liệu JSON. | raw_decode [o] – Biểu diễn từng từ điển Python 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. | Giải mã dữ liệu JSON từ URL: Ví dụ thực tế |
Chúng ta sẽ lấy dữ liệu của CityBike NYC [Hệ thống chia sẻ xe đạp] từ URL sau [ //feeds.citibikenyc.com/stations/stations.json ] và chuyển đổi sang định dạng từ điển. | Ví dụ |
LƯU Ý: - Đảm bảo thư viện yêu cầu đã được cài đặt trong Python của bạn, nếu không hãy mở cửa sổ dòng lệnh hoặc CMD và gõ | [Đối với Python 3 trở lên] pip3 install requests |
Các 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.JSONDecoderError [msg, doc] | Các tham số của ngoại lệ là, |
msg - Thông báo lỗi chưa được định dạng | doc - Tài liệu JSON được phân tích cú pháp |
pos - chỉ số bắt đầu của doc khi nó thất bại | lineno – số dòng thể hiện tương ứng với pos |
colon – số cột thể hiện tương ứng với pos | Ví dụ, |
Số vô hạn và số 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 thư viện JSON của Python không có hạn chế nào đối với việc này. Nếu JSON nhận được kiểu dữ liệu vô hạn và NanN thì nó sẽ chuyển đổi sang dạng chữ. |