Sự phổ biến của JSON phần lớn là do nó sử dụng các cấu trúc dữ liệu chung như đối tượng và mảng được hỗ trợ ở dạng này hay dạng khác bởi phần lớn các ngôn ngữ lập trình. Bài đăng này xem xét cấu trúc cơ bản của dữ liệu được mã hóa JSON, cách cấu trúc đó liên quan đến cấu trúc dữ liệu Python và sử dụng Python để truy cập dữ liệu được mã hóa JSON một cách đáng tin cậy
Sử dụng các ví dụ mã Python
Tất cả các ví dụ mã Python trong bài đăng này đã được kiểm tra bằng Python 3. 8. 2 [macOS] và Python 3. 6. 9 [Ubuntu] và có thể chạy bằng trình thông dịch Python
Các ví dụ giả sử tệp
print[data["updated"]]0 nằm trong thư mục chính của bạn.
print[data["updated"]]1 [macOS] và
print[data["updated"]]2 [Ubuntu]
Nếu dán các ví dụ mã chứa vòng lặp
print[data["updated"]]3 hoặc câu lệnh
print[data["updated"]]4, hãy nhấn enter hai lần để thực thi mã và quay lại dấu nhắc trình thông dịch Python của
print[data["updated"]]5
Cấu trúc của dữ liệu được mã hóa JSON
Bạn có thể tìm thấy mô tả chi tiết hơn về cấu trúc của dữ liệu được mã hóa JSON tại đây, nhưng với mục đích của bài đăng này
- Dữ liệu được mã hóa JSON bao gồm các mảng, đối tượng, giá trị và cặp tên/giá trị
- Một mảng được bao quanh bởi dấu ngoặc vuông
print[data["updated"]]
6 và chứa danh sách các giá trị được phân tách bằng dấu phẩy - Một đối tượng được bao quanh bởi dấu ngoặc nhọn
print[data["updated"]]
7 và chứa danh sách các cặp tên/giá trị được phân tách bằng dấu phẩy - Một cặp tên/giá trị bao gồm một tên trong dấu ngoặc kép
print[data["updated"]]
8, theo sau là dấu hai chấmprint[data["updated"]]
9, theo sau là một giá trị - Một giá trị có thể là một chuỗi, một số, boolean, null, một mảng khác hoặc một đối tượng khác
Hãy xem xét tệp sau chứa dữ liệu được mã hóa JSON trên hai phiên bản macOS
Thẻ giả
Nội dung giảhệ điều hành Mac. json
print[data["updated"]]0
- Đối tượng cấp cao nhất xác định hai cặp tên/giá trị
- Đầu tiên là
print[data["updated"]]
10 và có giá trị chuỗi làprint[data["updated"]]
11 biểu thị ngày thông tin trong tệp được cập nhật lần cuối - Thứ hai là
print[data["updated"]]
12 có giá trị là một mảng - Mỗi giá trị trong mảng
print[data["updated"]]
12 là một đối tượng đại diện cho một phiên bản macOS duy nhất - Mỗi đối tượng đại diện cho một phiên bản macOS chứa thông tin về phiên bản đó ở dạng năm cặp tên/giá trị.
print[data["updated"]]
14,print[data["updated"]]
15,print[data["updated"]]
16,print[data["updated"]]
17 vàprint[data["updated"]]
18. Tất cả các giá trị là chuỗi
Truy cập dữ liệu được mã hóa JSON bằng Python
Để cho phép Python truy cập dữ liệu được mã hóa JSON, trước tiên chúng ta cần mở tệp và sau đó đọc nội dung của nó vào bộ nhớ. Cái sau được gọi là giải mã hoặc giải tuần tự hóa và trong Python được thực hiện bằng phương thức
print[data["updated"]]19 từ thư viện
print[data["updated"]]10 của Python. Là một phần của quy trình giải tuần tự hóa này, một mảng JSON được chuyển đổi thành danh sách Python
print[data["updated"]]11 và một đối tượng JSON được chuyển đổi thành từ điển Python
print[data["updated"]]12
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]4
Dữ liệu được mã hóa JSON đã giải tuần tự hóa hiện được lưu trữ trong biến
print[data["updated"]]13. Đầu ra đã được định dạng lại cho rõ ràng
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]6
đầu ra
print[data["updated"]]7
Ngoài dấu nháy kép
print[data["updated"]]14 được thay thế bằng dấu nháy đơn
print[data["updated"]]15, đầu ra này trông giống hệt với dữ liệu được mã hóa JSON trong tệp của chúng tôi. Tuy nhiên, hãy nhớ rằng những gì cấu thành một mảng trong dữ liệu được mã hóa JSON hiện là danh sách Python
print[data["updated"]]11 và những đối tượng trong cùng dữ liệu đó hiện là từ điển Python
print[data["updated"]]12
Để truy cập một phần dữ liệu cụ thể, chúng ta có thể sử dụng ký hiệu ngoặc. Ví dụ: để lấy ngày thông tin được cập nhật lần cuối
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]
đầu ra
print[data["updated"]]1
Để có được thông tin cụ thể về một phiên bản macOS cụ thể có liên quan nhiều hơn một chút
- Thông tin về cả hai phiên bản macOS có trong danh sách
print[data["updated"]]
12 - Mỗi giá trị của danh sách
print[data["updated"]]
12 là một từ điển chứa thông tin về một phiên bản macOS duy nhất - Chúng tôi có thể truy cập thông tin trong một từ điển cụ thể bằng cách sử dụng vị trí hoặc chỉ mục của nó trong danh sách
print[data["updated"]]
12. Vì danh sách Python không được lập chỉ mục, nên từ điển đầu tiên có chỉ mục làprint[data["updated"]]
71, từ điển thứ hai có chỉ mục làprint[data["updated"]]
72
GHI CHÚ. là một công cụ hữu ích hiển thị dữ liệu được mã hóa JSON hiển thị số lượng giá trị trong danh sách [mảng JSON] và chỉ mục của từng giá trị trong danh sách đó. Xin lưu ý rằng bạn cần chuyển sang chế độ xem dạng cây. Ngoài ra, trình chỉnh sửa mã Visual Studio Code có chế độ xem Phác thảo hiển thị dữ liệu được mã hóa JSON theo cách tương tự
Vì vậy, để có được ngày macOS Mojave được công bố, chúng ta cần nhắm mục tiêu từ điển đầu tiên của danh sách
print[data["updated"]]12
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]1
đầu ra
print[data["updated"]]7
Để có được ngày cả macOS Mojave và macOS Catalina được phát hành, chúng tôi cần nhắm mục tiêu từ điển đầu tiên của danh sách
print[data["updated"]]12 và sau đó là từ điển thứ hai của nó
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]3
đầu ra
print[data["updated"]]4
Hãy làm cho mọi thứ thú vị hơn một chút và thêm một số thông tin khác cho từng phiên bản macOS vào dữ liệu được mã hóa JSON của chúng tôi
Thẻ giả
Nội dung giảhệ điều hành Mac. json
print[data["updated"]]40
Trong Python, dữ liệu được mã hóa JSON được cập nhật trong tệp cần được giải tuần tự hóa lại
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]41
Ở đây chúng tôi sử dụng câu lệnh
print[data["updated"]]4 với hàm
print[data["updated"]]76. Điều này đảm bảo xử lý ngoại lệ tốt hơn và không yêu cầu hàm
print[data["updated"]]77 phải được gọi một cách rõ ràng vì câu lệnh
print[data["updated"]]4 xử lý việc thu thập và giải phóng tài nguyên phù hợp
Dữ liệu khử lưu huỳnh được cập nhật. Đầu ra đã được định dạng lại cho rõ ràng
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]6
đầu ra
print[data["updated"]]43
- Mỗi từ điển trong danh sách
print[data["updated"]]
12 hiện có thêm hai cặp tên/giá trị.print[data["updated"]]
30 vàprint[data["updated"]]
31 print[data["updated"]]
30 là danh sách có giá trị là tất cả các chuỗi với mỗi chuỗi biểu thị yêu cầu hệ thống tối thiểu để chạy phiên bản macOS cụ thể đóprint[data["updated"]]
31 cũng là một danh sách, nhưng mỗi giá trị của nó là một từ điển biểu thị thông tin trên mỗi bản phát hành của một phiên bản macOS duy nhất được cung cấp bởi bốn cặp tên/giá trị.print[data["updated"]]
15,print[data["updated"]]
35,print[data["updated"]]
36 vàprint[data["updated"]]
18
Để có được yêu cầu hệ thống tối thiểu đầu tiên để chạy macOS Mojave
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]44
đầu ra
print[data["updated"]]45
Để có yêu cầu hệ thống tối thiểu thứ nhất và thứ hai để chạy macOS Catalina
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]46
đầu ra
print[data["updated"]]47
Để lấy số bản dựng của bản phát hành đầu tiên của macOS Catalina
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]48
đầu ra
print[data["updated"]]49
Để lấy số bản dựng của bản phát hành thứ tám của macOS Mojave. Rất tiếc. Chỉ có bảy bản phát hành macOS Mojave
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]60
đầu ra
print[data["updated"]]61
Để lấy số bản dựng và phiên bản Darwin của bản phát hành đầu tiên của macOS Catalina
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]62
đầu ra
print[data["updated"]]63
Để nhận phiên bản, số bản dựng và phiên bản Darwin của bản phát hành thứ nhất, thứ hai và thứ ba của macOS Mojave
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]64
đầu ra
print[data["updated"]]65
Lặp qua dữ liệu được mã hóa JSON
Như đã thấy rõ từ các ví dụ trên, việc truy cập nhiều giá trị trong danh sách rất cồng kềnh và dễ bị lỗi. Mỗi giá trị – cho dù đó là một chuỗi, một số, boolean, null hay một từ điển – phải được nhắm mục tiêu rõ ràng bằng cách sử dụng vị trí hoặc chỉ mục của nó trong danh sách. Thông thường, tổng số giá trị trong danh sách không được biết trước hoặc số lượng giá trị trong danh sách có tên tương tự khác nhau dẫn đến lỗi chỉ mục nằm ngoài phạm vi. Ví dụ: danh sách
print[data["updated"]]31 cho macOS Mojave chứa bảy giá trị [từ điển], nhưng đối với macOS Catalina chỉ chứa sáu
Để khắc phục điều này, chúng ta có thể sử dụng câu lệnh
print[data["updated"]]3 để lặp hoặc lặp qua mọi giá trị trong danh sách lặp lại các bước giống nhau trong mỗi vòng lặp hoặc lần lặp
Ví dụ: để lấy tên mã của mọi phiên bản macOS mà không cần sử dụng vòng lặp
print[data["updated"]]3
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]66
đầu ra
print[data["updated"]]67
Ngoài ra, để lấy tên mã của mọi phiên bản macOS bằng vòng lặp
print[data["updated"]]3
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]68
đầu ra
print[data["updated"]]67
Vòng lặp lặp lại cho mọi giá trị [từ điển] trong danh sách
print[data["updated"]]12. Trên mỗi vòng lặp, giá trị danh sách hiện tại được ghi vào biến
print[data["updated"]]43. Sau đó, chúng tôi sử dụng
print[data["updated"]]44 để lấy tên mã của phiên bản macOS đó
Để lấy tên mã của mọi phiên bản macOS cùng với các yêu cầu hệ thống tối thiểu của chúng mà không cần sử dụng vòng lặp
print[data["updated"]]3
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]70
đầu ra
print[data["updated"]]71
Ngoài ra, để có được thông tin tương tự bằng cách sử dụng vòng lặp
print[data["updated"]]3
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]72
đầu ra
print[data["updated"]]71
Trong trường hợp này, các vòng lặp
print[data["updated"]]3 được lồng vào nhau. Vòng lặp
print[data["updated"]]3 bên ngoài giống như trong ví dụ trước. Vòng lặp bên trong
print[data["updated"]]3 lặp lại cho mọi giá trị [chuỗi] trong danh sách
print[data["updated"]]30. Trên mỗi vòng lặp, giá trị danh sách hiện tại được ghi vào biến
print[data["updated"]]401. Sau đó, để có được từng yêu cầu, chúng tôi chỉ cần sử dụng
print[data["updated"]]401
Vì danh sách
print[data["updated"]]30 được chứa trong danh sách
print[data["updated"]]12 nên chúng ta phải lồng các vòng lặp
print[data["updated"]]3. Không làm như vậy sẽ cho kết quả không đầy đủ khi chỉ nhắm mục tiêu vào danh sách
print[data["updated"]]30 của giá trị cuối cùng trong danh sách
print[data["updated"]]12
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]74
đầu ra
print[data["updated"]]75
Cuối cùng, để bao gồm thêm phiên bản của mọi bản phát hành macOS mà không cần sử dụng vòng lặp
print[data["updated"]]3
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]76
đầu ra
print[data["updated"]]77
Ngoài ra, sử dụng vòng lặp
print[data["updated"]]3
Thẻ giả
Nội dung giảChỉ huy
print[data["updated"]]78
đầu ra
print[data["updated"]]77
Vòng lặp
print[data["updated"]]3 cuối cùng lặp lại cho mọi giá trị [từ điển] trong danh sách
print[data["updated"]]31. Trên mỗi vòng lặp, giá trị danh sách hiện tại được ghi vào biến
print[data["updated"]]412. Sau đó, chúng tôi sử dụng
print[data["updated"]]413 để lấy phiên bản của mỗi bản phát hành
Tương tự như danh sách
print[data["updated"]]30, danh sách
print[data["updated"]]31 cũng được chứa trong danh sách
print[data["updated"]]12, vì vậy vòng lặp
print[data["updated"]]3 nhắm mục tiêu danh sách
print[data["updated"]]31 cũng được lồng trong vòng lặp
print[data["updated"]]3 nhắm mục tiêu danh sách
print[data["updated"]]12
ghi chú
Thông tin về các bản phát hành macOS [Mac OS X] có trong tệp
print[data["updated"]]
0 chỉ nhằm mục đích trình diễn. Phiên bản của tệp được sử dụng trong bài đăng này là một tập hợp con của dữ liệu có trong bản gốc. Phiên bản mới nhất, đầy đủ có thể được tìm thấy ở đây. Mặc dù mọi nỗ lực đã được thực hiện để đảm bảo dữ liệu này là chính xác nhưng độ chính xác của nó không được đảm bảophân tích cú pháp-json. py là một tập lệnh Python được sử dụng để phân tích cú pháp dữ liệu được mã hóa JSON trong tệp
print[data["updated"]]
0 và dựa trên các ví dụ trong bài đăng này. một nút. js chạy tập lệnh Python này và hiển thị kết quả có thể được tìm thấy tại macos. công nghệ-otaku. comLàm cách nào để lặp lại tệp JSON trong Python?
Lặp qua JSON bằng các khóa trong Python . Nó sẽ phân tích cú pháp 'json_multi dimensions. json' làm từ điển 'my_dict'. import the JSON module and parse the JSON file using the 'load' method as shown below. It will parse the 'json_multidimensional. json' file as the dictionary 'my_dict'.Làm cách nào để lấy dữ liệu từ phản hồi JSON trong Python?
Chỉ cần thực hiện phản hồi. json[] , thế là xong. phản ứng. json[] trả về phản hồi JSON ở định dạng từ điển Python để chúng tôi có thể truy cập JSON bằng các cặp khóa-giá trị.Làm cách nào để nhận phản hồi JSON từ API REST trong Python?
Để nhận JSON từ điểm cuối API REST, bạn phải gửi yêu cầu HTTP GET đến máy chủ API REST và cung cấp Chấp nhận. tiêu đề yêu cầu ứng dụng/json . chấp nhận. tiêu đề application/json cho máy chủ API REST biết rằng ứng dụng khách API muốn nhận dữ liệu ở định dạng JSON.Làm cách nào để in phản hồi JSON bằng Python?
Cách in đẹp một đối tượng JSON từ các yêu cầu Python .Chúng tôi đã tải phản hồi yêu cầu GETChúng tôi đã tuần tự hóa phản hồi bằng cách sử dụng. phương thức json[]Sau đó, chúng tôi đã sử dụng hàm dumps[] với thụt lề là 4 để in phản hồi đẹp