JSON [JavaScript Object Notation] là một định dạng dữ liệu phổ biến được sử dụng để biểu diễn dữ liệu có cấu trúc. Nó được sử dụng rộng rãi trong các API và ứng dụng web. Trong Python, bạn có thể sử dụng mô-đun
{"name":"James","gender":"male","age":32}
8 tích hợp sẵn cung cấp tất cả các phương thức cần thiết để làm việc với dữ liệu JSON. Bài viết này sẽ đề cập đến JSON là gì và cách phân tích cú pháp, tuần tự hóa, giải tuần tự hóa, mã hóa, giải mã và in đẹp dữ liệu của nó bằng PythonMục lục
JSON là gì?
JSON
là định dạng trao đổi dữ liệu nhẹ phổ biến lấy cảm hứng từ định dạng cú pháp đối tượng JavaScript được chỉ định bởi RFC 7159 và ECMA-404. Mục đích chính của định dạng JSON là lưu trữ và truyền dữ liệu giữa trình duyệt và máy chủ, nhưng định dạng này được sử dụng rộng rãi bởi các API vi dịch vụ để trao đổi dữ liệucú pháp JSON
Làm việc với AWS Lambda bằng Python bằng Boto3
Làm việc với AWS Lambda bằng Python u
Vui lòng bật JavaScript
Làm việc với AWS Lambda bằng Python bằng Boto3Cú pháp của JSON rất đơn giản. Nó được xây dựng trên hai cấu trúc đơn giản
- Tập hợp các cặp tên/giá trị [trong Python, chúng được biểu diễn dưới dạng từ điển Python]
- Một danh sách có thứ tự các giá trị. Trong Python, đây được coi là một danh sách
Dưới đây là ví dụ về các cấu trúc dữ liệu phổ quát đơn giản này
Bộ sưu tập các cặp tên/giá trị
Các cặp tên/giá trị đang tạo thành một đối tượng JSON được mô tả bằng dấu ngoặc nhọn
{"name":"James","gender":"male","age":32}
9. Bạn có thể định nghĩa một đối tượng JSON ở dạng được định dạng{
"name": "James",
"gender": "male"
"age": 32
}
Hoặc dưới dạng một chuỗi [cả hai đối tượng đều giống nhau]
{"name":"James","gender":"male","age":32}
Một danh sách có thứ tự các giá trị
Danh sách các mục được sắp xếp theo thứ tự được xác định bằng cách sử dụng dấu ngoặc vuông
[
"Apple",
"Banana",
"Cherry"
]
0 và giữ bất kỳ giá trị nào được phân tách bằng dấu phẩy [[
"Apple",
"Banana",
"Cherry"
]
1][
"Apple",
"Banana",
"Cherry"
]
Danh sách các mục được sắp xếp giống nhau có thể được định nghĩa là một chuỗi đơn
["Apple","Banana","Cherry"]
ràng buộc JSON
Định dạng JSON có một số ràng buộc
- Các cặp giá trị/tên
2 phải được định nghĩa là một chuỗi trong dấu ngoặc kép [[ "Apple", "Banana", "Cherry" ]
3][ "Apple", "Banana", "Cherry" ]
- _______44 phải thuộc kiểu dữ liệu JSON hợp lệ.
- Chuỗi – một số ký tự văn bản thuần túy
- Số – một số nguyên
- Đối tượng – tập hợp các cặp khóa/giá trị JSON
- Mảng – một danh sách các giá trị được sắp xếp theo thứ tự
- Boolean –
5 hoặc[ "Apple", "Banana", "Cherry" ]
6[ "Apple", "Banana", "Cherry" ]
- Null – đối tượng rỗng
- Đối tượng JSON hợp lệ không thể chứa các loại dữ liệu khác, ví dụ:
7[ "Apple", "Banana", "Cherry" ]
Dữ liệu JSON trông như thế nào?
Đây là một ví dụ về cấu trúc dữ liệu JSON
{"name":"James","gender":"male","age":32}
4Làm việc với JSON trong Python
JSON là một định dạng chuẩn để trao đổi dữ liệu được sử dụng bởi nhiều ngôn ngữ lập trình, bao gồm cả Python. JSON [Ký hiệu đối tượng JavaScript] là một cách biểu diễn dữ liệu ở định dạng văn bản mà con người có thể đọc được và máy tính dễ dàng xử lý. Python cung cấp một mô-đun tích hợp có tên là
{"name":"James","gender":"male","age":32}
8 để hoạt động với dữ liệu JSON. Mô-đun {"name":"James","gender":"male","age":32}
8 cho phép bạn chuyển đổi các đối tượng Python thành các chuỗi JSON và ngược lại. Nó cũng cung cấp các phương thức để tải và lưu các tệp JSON. Ngoài ra, module {"name":"James","gender":"male","age":32}
8 còn có thể dùng để chuyển đổi từ điển Python thành các đối tượng JSON, nó chứa các phương thức xử lý dữ liệu JSON, bao gồm các thao tác sau. phân tích cú pháp, tuần tự hóa, giải tuần tự hóa, mã hóa, giải mã và in đẹp. Nhìn chung, mô-đun {"name":"James","gender":"male","age":32}
8 giúp dễ dàng làm việc với dữ liệu JSON bằng ngôn ngữ lập trình PythonTuần tự hóa các đối tượng Python thành định dạng JSON
Tuần tự hóa là quá trình dịch cấu trúc dữ liệu thành định dạng có thể được lưu trữ hoặc truyền đi và được xây dựng lại sau đó. Áp dụng cho Python, tuần tự hóa có nghĩa là chúng tôi sẽ dịch các loại dữ liệu cơ bản của Python sang định dạng JSON. Mô-đun
{"name":"James","gender":"male","age":32}
8 có thể chuyển đổi từ điển Python hoặc liệt kê các đối tượng thành định dạng JSON [chuỗi]Đây là cách mô-đun Python
{"name":"James","gender":"male","age":32}
8 xử lý quá trình tuần tự hóaPython classJSON typeint, long, floatnumberstrstringTruetrueFalsefalselist, tuplearraydictobjectNonenullPython sang đối tượng JSON và dịch kiểu dữ liệuCó hai phương thức có sẵn trong mô-đun Python
{"name":"James","gender":"male","age":32}
8 để xử lý quy trình tuần tự hóa- – chuyển đổi đối tượng Python thành định dạng JSON luồng [thường được sử dụng để lưu dữ liệu JSON vào tệp]
- – chuyển đổi đối tượng Python thành một chuỗi có định dạng JSON [tạo ra một đối tượng chuỗi Python chứa dữ liệu JSON]
Tuần tự hóa dữ liệu Python bằng cách sử dụng kết xuất []
Đây là một ví dụ về tuần tự hóa cấu trúc dữ liệu Python thành luồng JSON bằng phương thức
["Apple","Banana","Cherry"]
5{
"name": "James",
"gender": "male"
"age": 32
}
3Đây là một kết quả thực thi
Tuần tự hóa dữ liệu Python bằng cách sử dụng kết xuất []
Đây là một ví dụ về tuần tự hóa cấu trúc dữ liệu Python thành chuỗi Python được định dạng JSON bằng phương thức
["Apple","Banana","Cherry"]
6{
"name": "James",
"gender": "male"
"age": 32
}
5Đây là kết quả thực thi. Giải tuần tự hóa dữ liệu JSON thành đối tượng Python
Quá trình deserialization ngược lại với serialization. Nó chuyển đổi dữ liệu JSON thành danh sách Python hoặc đối tượng từ điển
Đây là cách mô-đun Python
{"name":"James","gender":"male","age":32}
8 xử lý quy trình khử lưu huỳnhJSON typePython classnullNonetrueTruefalseFalsenumber [int]intnumber [real]floatarrayliststringstrobjectdictJSON sang dịch kiểu dữ liệu đối tượng PythonCó hai phương thức có sẵn trong mô-đun Python {"name":"James","gender":"male","age":32}
8 để xử lý quá trình khử lưu huỳnh- – chuyển đổi định dạng JSON luồng thành đối tượng Python
- – chuyển đổi một chuỗi có định dạng JSON thành một đối tượng Python
Deserializing luồng sử dụng load[]
Để deserialize theJSON formated stream thành một đối tượng Python, bạn cần sử dụng phương thức["Apple","Banana","Cherry"]
9. {
"name": "James",
"gender": "male"
"age": 32
}
9Đây là một kết quả thực thi
Deserializing chuỗi sử dụng tải[]
Đến
giải tuần tự hóa chuỗi định dạng JSON thành đối tượng Python, bạn cần sử dụng phương thức{"name":"James","gender":"male","age":32}
40. ______31Đây là một kết quả thực thi
Đọc dữ liệu JSON trong Python
Tùy thuộc vào loại nguồn dữ liệu JSON [chuỗi được định dạng JSON hoặc
luồng có định dạng JSON], có hai phương thức có sẵn trong mô-đun Python{"name":"James","gender":"male","age":32}
8 để xử lý thao tác đọc- – đọc một luồng có định dạng JSON và tạo một đối tượng Python từ đó
- – đọc một chuỗi có định dạng JSON và tạo một đối tượng Python từ đó
Đọc dữ liệu từ tệp bằng load[]
Bạn cần sử dụng phương pháp
["Apple","Banana","Cherry"]
9 để đọcLuồng định dạng JSON và chuyển đổi nó thành đối tượng Python. Luồng có định dạng JSON được trả về bằng phương thức {"name":"James","gender":"male","age":32}
43 tích hợp sẵn của Python. Để biết thêm thông tin về các hoạt động của tệp, chúng tôi khuyên bạn nên tham khảo bài viết Làm việc với tệp trong Python. ______35Đây là một kết quả thực thi
Đọc dữ liệu từ tệp bằng tải []
Bạn cần sử dụng phương thức{"name":"James","gender":"male","age":32}
40 để đọc chuỗi định dạng JSON và chuyển đổi nó thành một đối tượng Python. Chuỗi định dạng JSON có thể được lấy từ tệp bằng phương thức {"name":"James","gender":"male","age":32}
43 tích hợp sẵn của Python. Để biết thêm thông tin về các hoạt động của tệp, chúng tôi khuyên bạn nên xem bài viết Làm việc với tệp trong Python. {"name":"James","gender":"male","age":32}
5Đây là một kết quả thực thi
Viết dữ liệu JSON vào tệp bằng Python
Tùy thuộc vào loại dữ liệu JSON [chuỗi được định dạng JSON hoặc luồng được định dạng JSON], có hai phương thức có sẵn trong mô-đun Python{"name":"James","gender":"male","age":32}
8 để xử lý thao tác ghi- – chuyển đổi đối tượng Python thành định dạng JSON luồng [thường được sử dụng để lưu dữ liệu thẳng vào tệp]
- – chuyển đổi đối tượng Python thành một chuỗi có định dạng JSON [tạo ra một đối tượng chuỗi Python có thể được ghi vào tệp]
Ghi dữ liệu vào tệp bằng dump[]
Để ghi luồng có định dạng JSON vào tệp, bạn cần sử dụng phương thức{"name":"James","gender":"male","age":32}
47 kết hợp với phương thức {"name":"James","gender":"male","age":32}
43 tích hợp sẵn của Python. Để biết thêm thông tin về các hoạt động của tệp, chúng tôi khuyên bạn nên xem bài viết Làm việc với tệp trong Python. {"name":"James","gender":"male","age":32}
1Đây là một ví dụ đầu ra
Ghi dữ liệu vào tệp bằng cách sử dụng kết xuất []
Để ghi chuỗi có định dạng JSON vào tệp, bạn cần sử dụng phương thức
{"name":"James","gender":"male","age":32}
49 kết hợp với phương thức {"name":"James","gender":"male","age":32}
43 có sẵn trong Python. Để biết thêm thông tin về các hoạt động của tệp, chúng tôi khuyên bạn nên xem bài viết Làm việc với tệp trong Python{"name":"James","gender":"male","age":32}
2Đây là một ví dụ đầu ra
Mã hóa và giải mã các đối tượng JSON tùy chỉnh trong Python
Mặc dù mô-đun
{"name":"James","gender":"male","age":32}
8 có thể xử lý hầu hết các loại Python tích hợp. Nó không hiểu cách mã hóa các loại dữ liệu tùy chỉnh theo mặc định. Nếu bạn cần tự mã hóa một đối tượng tùy chỉnh, bạn có thể mở rộng một lớp và ghi đè phương thức {
"name": "James",
"gender": "male"
"age": 32
}
32 của lớp đó. Phương thức này được sử dụng cho các đối tượng tùy chỉnh JSONinfyVí dụ về mã hóa đối tượng tùy chỉnh trong Python
Hãy xem ví dụ. Giả sử bạn có một vài lớp do người dùng định nghĩa. một
{
"name": "James",
"gender": "male"
"age": 32
}
33 và một {
"name": "James",
"gender": "male"
"age": 32
}
34Và bạn muốn tuần tự hóa chúng thành một tài liệu JSONĐó là cách bạn có thể làm điều đó
{"name":"James","gender":"male","age":32}
3Đây là một ví dụ đầu ra
Ví dụ về giải mã đối tượng tùy chỉnh trong Python
Nếu bạn cần chuyển đổi tài liệu JSON thành một số đối tượng Python khác [tôi. e. , không phải là từ điển mặc định], cách đơn giản nhất để làm điều đó là sử dụng lớp và đối số của phương thức
["Apple","Banana","Cherry"]
9 hoặc {"name":"James","gender":"male","age":32}
40Các
{"name":"James","gender":"male","age":32}
4Đây là một ví dụ đầu ra
Làm cách nào để in dữ liệu JSON đẹp bằng Python?
Có hai phương pháp để bạn in một thông báo JSON đẹp mắt
- Sử dụng đối số
37 của phương thức{ "name": "James", "gender": "male" "age": 32 }
6 – đây là một tùy chọn lý tưởng khi bạn đang in thông báo JSON từ mã Python của mình["Apple","Banana","Cherry"]
- Sử dụng mô-đun – bạn có thể sử dụng phương pháp này khi cần định dạng một thông báo JSON trong trình bao của mình
In JSON đẹp bằng cách sử dụng kết xuất []
In JSON đẹp bằng phương pháp["Apple","Banana","Cherry"]
6 rất đơn giản. {"name":"James","gender":"male","age":32}
5Đối số
{
"name": "James",
"gender": "male"
"age": 32
}
37 xác định thụt đầu dòng [số hoặc khoảng trắng] cho các đối tượng JSON trong quá trình inĐây là một kết quả thực thi
In JSON đẹp bằng cách sử dụng json. mô-đun công cụ
Để định dạng tài liệu JSON tại trình bao của bạn mà không cần sử dụng công cụ của bên thứ ba, bạn có thể sử dụng mô-đun Python
{
"name": "James",
"gender": "male"
"age": 32
}
51{"name":"James","gender":"male","age":32}
6Đây là một ví dụ
Làm cách nào để sắp xếp các khóa JSON trong Python?
Khi cần sắp xếp các khóa JSON [sắp xếp các đối tượng JSON theo tên], bạn có thể đặt đối số
{
"name": "James",
"gender": "male"
"age": 32
}
52 thành {
"name": "James",
"gender": "male"
"age": 32
}
53 trong phương thức ["Apple","Banana","Cherry"]
6{"name":"James","gender":"male","age":32}
7Đây là một kết quả thực thi
Tóm lược
Bài viết này trình bày các kiến thức cơ bản và kỹ thuật xử lý JSON nâng cao trong Python, bao gồm
phân tích cú pháp, tuần tự hóa, giải tuần tự hóa, mã hóa, giải mã và in dữ liệu JSON đẹp bằng Python. Khả năng xử lý JSON bằng Python là kỹ năng thực hành bắt buộc đối với mọi kỹ sư tự động hóa AWS, chẳng hạn như khi bạn cần xử lý quá trình xử lý luồng DynamoDB trong hàm AWS Lambda của mìnhNhững bài viết liên quan
- Giới thiệu nhanh về Python dành cho Kỹ sư tự động hóa AWS
- Làm việc với DynamoDB bằng Python bằng Boto3
- Làm việc với danh sách trong Python
- Làm việc với tệp trong Python
- Làm việc với S3 bằng Python bằng Boto3
Kamil Abdurahim
Tôi là một lập trình viên Python và là một người đam mê bảo mật máy tính. Tôi đã là lập trình viên ít nhất 7 năm và là lập trình viên Python ít nhất 4 năm. Tôi cũng đã tham gia nhiều CTF khác nhau và nhóm của tôi đã đứng thứ 3 trong cuộc thi an ninh mạng quốc gia Ethiopian Cybertalents. Tôi cũng có kinh nghiệm trong các hệ thống Linux khác nhau. Tôi đã làm việc trên cả hệ thống dựa trên Debian và Arch