Đọc danh sách các đối tượng JSON Python
Kể từ khi thành lập, JSON đã nhanh chóng trở thành tiêu chuẩn thực tế để trao đổi thông tin. Rất có thể bạn ở đây vì bạn cần vận chuyển một số dữ liệu từ đây đến đó. Có lẽ bạn đang thu thập thông tin thông qua API hoặc lưu trữ dữ liệu của mình trong cơ sở dữ liệu tài liệu. Bằng cách này hay cách khác, bạn đã hiểu hết về JSON và bạn đã tìm đến Python theo cách của mình Show
May mắn thay, đây là một nhiệm vụ khá phổ biến và—cũng như hầu hết các nhiệm vụ phổ biến khác—Python khiến nó trở nên dễ dàng một cách kinh khủng. Đừng sợ, các bạn Pythoneer và Pythonistas. Đây sẽ là một làn gió
Tải xuống PDF miễn phí. Bảng cheat Python 3 Lịch sử tóm tắt (rất) của JSONKhông quá ngạc nhiên, Ký hiệu đối tượng JavaScript được lấy cảm hứng từ một tập hợp con của ngôn ngữ lập trình JavaScript xử lý cú pháp nghĩa đen của đối tượng. Họ có một trang web tiện lợi giải thích toàn bộ sự việc. Đừng lo lắng mặc dù. JSON từ lâu đã trở thành ngôn ngữ bất khả tri và tồn tại như một tiêu chuẩn riêng của nó, vì vậy chúng ta rất may có thể tránh JavaScript vì lợi ích của cuộc thảo luận này Cuối cùng, cộng đồng nói chung đã chấp nhận JSON vì cả con người và máy móc đều dễ dàng tạo và hiểu Loại bỏ các quảng cáoHãy nhìn xem, đó là JSONChuẩn bị. Tôi sắp cho bạn xem một số JSON ngoài đời thực—giống như bạn thấy ở ngoài kia. Không sao đâu. 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… vậy đó là bạn
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ư danh sách và đối tượng lồng nhau
chà. Bạn đã sống sót sau cuộc chạm trán đầu tiên với một số JSON hoang dã. Bây giờ bạn chỉ cần học cách chế ngự nó Python hỗ trợ JSON nguyên bảnPython đi kèm với gói tích hợp có tên 1 để mã hóa và giải mã dữ liệu JSONChỉ cần ném anh chàng nhỏ bé này lên đầu hồ sơ của bạn
Một chút từ vựngQuá 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 đó là nối tiếp) để được lưu trữ hoặc truyền qua mạng. Bạn cũng có thể nghe thấy thuật ngữ soái ca, nhưng đó là một cuộc thảo luận hoàn toàn khác. Đương nhiên, giải tuần tự hóa là quá trình giải mã dữ liệu đối ứng đã được lưu trữ hoặc phân phối theo tiêu chuẩn JSON
Tuần tự hóa JSONĐiều gì xảy ra sau khi máy tính xử lý nhiều thông tin? . Theo đó, thư viện 1 đưa ra phương thức 3 để ghi dữ liệu vào tệp. Ngoài ra còn có một phương thức 4 (phát âm là “dump-s”) để ghi vào một chuỗi PythonCác đối tượng Python đơn giản được dịch sang JSON theo cách chuyển đổi khá trực quan PythonJSON 5 6 7, 8 9 0 1 2, 3, 4 5 6 7 8 9 0 1Một ví dụ tuần tự hóa đơn giảnHãy tưởng tượng bạn đang làm việc với một đối tượng Python trong bộ nhớ trông giống như thế này
Điều quan trọng là bạn lưu thông tin này vào đĩa, vì vậy nhiệm vụ của bạn là ghi nó vào một tệp Sử dụng trình quản lý bối cảnh của Python, bạn có thể tạo một tệp có tên 2 và mở tệp đó ở chế độ ghi. (Các tệp JSON kết thúc thuận tiện bằng phần mở rộng 3. )
Lưu ý rằng 3 có hai đối số vị trí. (1) đối tượng dữ liệu được tuần tự hóa và (2) đối tượng giống như tệp mà các byte sẽ được ghi vàoHoặc, nếu bạn muốn tiếp tục sử dụng dữ liệu JSON được tuần tự hóa này trong chương trình của mình, bạn có thể ghi dữ liệu đó vào đối tượng 0 gốc của Python
Lưu ý rằng đối tượng giống như tệp không có vì bạn không thực sự ghi vào đĩa. Ngoài ra, 4 cũng giống như 3hoan hô. Bạn đã tạo ra một số JSON con và bạn đã sẵn sàng phát hành nó vào thế giới tự nhiên để phát triển lớn mạnh Loại bỏ các quảng cáoMột số đối số từ khóa hữu íchHãy nhớ rằng, JSON có nghĩa là con người có thể dễ dàng đọc được, nhưng cú pháp có thể đọc được là không đủ nếu tất cả được ghép lại với nhau. Ngoài ra, bạn có thể có phong cách lập trình khác với tôi và bạn có thể dễ dàng đọc mã hơn khi nó được định dạng theo ý thích của bạn
Tùy chọn đầu tiên mà hầu hết mọi người muốn thay đổi là khoảng trắng. Bạn có thể sử dụng đối số từ khóa 0 để chỉ định kích thước thụt đầu dòng cho các cấu trúc lồng nhau. Hãy tự mình kiểm tra sự khác biệt bằng cách sử dụng 1 mà chúng tôi đã xác định ở trên và chạy các lệnh sau trong bảng điều khiển>>>
Một tùy chọn định dạng khác là đối số từ khóa 2. Theo mặc định, đây là 2-bộ của các chuỗi phân tách 3, nhưng một giải pháp thay thế phổ biến cho JSON nhỏ gọn là 4. Hãy xem lại JSON mẫu để xem những dấu tách này phát huy tác dụng ở đâuCó những cái khác, như 5, nhưng tôi không biết cái đó làm gì. Bạn có thể tìm thấy toàn bộ danh sách trong nếu bạn tò mòGiải tuần tự hóa JSONTuyệt, có vẻ như bạn đã thu thập được một số JSON hoang dã. Bây giờ là lúc để quất nó thành hình. Trong thư viện 1, bạn sẽ tìm thấy 7 và 8 để biến dữ liệu được mã hóa JSON thành các đối tượng PythonGiống như tuần tự hóa, có một bảng chuyển đổi đơn giản để giải tuần tự hóa, mặc dù bạn có thể đoán nó trông như thế nào rồi JSONPython 6 5 9 7 1 0 5 (int) 2 5 (real) 4 7 6 9 8 1 0Về mặt kỹ thuật, chuyển đổi này không phải là một sự đảo ngược hoàn hảo đối với bảng tuần tự hóa. Về cơ bản, điều đó có nghĩa là nếu bạn mã hóa một đối tượng ngay bây giờ và sau đó giải mã lại sau, bạn có thể không nhận được chính xác cùng một đối tượng. Tôi tưởng tượng nó hơi giống dịch chuyển tức thời. phá vỡ các phân tử của tôi ở đây và đặt chúng lại với nhau ở đó. Tôi vẫn là người như vậy chứ? Trên thực tế, nó có thể giống như nhờ một người bạn dịch một thứ gì đó sang tiếng Nhật và một người bạn khác dịch lại sang tiếng Anh. Bất chấp điều đó, ví dụ đơn giản nhất sẽ là mã hóa một 8 và nhận lại một 7 sau khi giải mã, như vậy>>>
Có thể bạn quan tâmMột ví dụ Deserialization đơn giảnLần này, hãy tưởng tượng bạn có một số dữ liệu được lưu trữ trên đĩa mà bạn muốn thao tác trong bộ nhớ. Bạn vẫn sẽ sử dụng trình quản lý bối cảnh, nhưng lần này bạn sẽ mở 2 hiện có ở chế độ đọc
Mọi thứ khá đơn giản ở đây, nhưng hãy nhớ rằng kết quả của phương pháp này có thể trả về bất kỳ loại dữ liệu được phép nào từ bảng chuyển đổi. Điều này chỉ quan trọng nếu bạn đang tải dữ liệu mà bạn chưa từng thấy trước đây. Trong hầu hết các trường hợp, đối tượng gốc sẽ là một 5 hoặc một 7Nếu bạn đã lấy dữ liệu JSON từ một chương trình khác hoặc đã nhận được một chuỗi dữ liệu có định dạng JSON trong Python, thì bạn có thể dễ dàng giải tuần tự hóa dữ liệu đó bằng 8, tải tự nhiên từ một chuỗi
thì đấy. Bạn đã thuần hóa JSON hoang dã và giờ nó nằm trong tầm kiểm soát của bạn. Nhưng những gì bạn làm với sức mạnh đó là tùy thuộc vào bạn. Bạn có thể cho nó ăn, nuôi dưỡng nó và thậm chí dạy cho nó các thủ thuật. Không phải là tôi không tin tưởng bạn… nhưng hãy giữ nó trên dây xích, được chứ? Loại bỏ các quảng cáoMột ví dụ trong thế giới thực (đại loại là)Đối với ví dụ giới thiệu của bạn, bạn sẽ sử dụng JSONPlaceholder, một nguồn dữ liệu JSON giả tuyệt vời cho mục đích thực hành Trước tiên hãy tạo một tệp script có tên là 1 hoặc bất kỳ thứ gì bạn muốn. Tôi thực sự không thể ngăn cản bạnBạn sẽ cần thực hiện một yêu cầu API cho dịch vụ JSONPlaceholder, vì vậy chỉ cần sử dụng gói 2 để thực hiện công việc nặng nhọc. Thêm các lần nhập này ở đầu tệp của bạn
Bây giờ, bạn sẽ làm việc với một danh sách những CẦN LÀM vì…bạn biết đấy, đó là một nghi thức thông qua hoặc bất cứ điều gì Hãy tiếp tục và yêu cầu API JSONPlaceholder cho điểm cuối 3. Nếu bạn không quen thuộc với 2, thì thực sự có một phương thức tiện dụng 5 sẽ làm tất cả công việc cho bạn, nhưng bạn có thể thực hành sử dụng thư viện 1 để giải tuần tự hóa thuộc tính 7 của đối tượng phản hồi. Nó sẽ trông giống như thế này 0Bạn không tin điều này hoạt động? . Trong khi bạn đang ở đó, hãy kiểm tra loại 8. Nếu bạn cảm thấy thích phiêu lưu, hãy xem qua 10 mục đầu tiên hoặc hơn trong danh sách>>> 1Thấy chưa, tôi sẽ không nói dối bạn, nhưng tôi rất vui vì bạn là một người hoài nghi
Được rồi, thời gian cho một số hành động. Bạn có thể xem cấu trúc của dữ liệu bằng cách truy cập điểm cuối trong trình duyệt, nhưng đây là TODO mẫu 2Có nhiều người dùng, mỗi người có một 00 duy nhất và mỗi tác vụ có một thuộc tính Boolean 01. Bạn có thể xác định người dùng nào đã hoàn thành nhiều tác vụ nhất không? 3Vâng, vâng, cách triển khai của bạn tốt hơn, nhưng vấn đề là, giờ đây bạn có thể thao tác dữ liệu JSON như một đối tượng Python bình thường Tôi không biết về bạn, nhưng khi tôi chạy lại tập lệnh tương tác, tôi nhận được kết quả sau >>> 4Điều đó thật tuyệt, nhưng bạn ở đây để tìm hiểu về JSON. Đối với nhiệm vụ cuối cùng của bạn, bạn sẽ tạo một tệp JSON chứa TODO đã hoàn thành cho mỗi người dùng đã hoàn thành số lượng TODO tối đa Tất cả những gì bạn cần làm là lọc 8 và ghi danh sách kết quả vào một tệp. Để đảm bảo tính độc đáo, bạn có thể gọi tệp đầu ra là 03. Có nhiều cách bạn có thể thực hiện, nhưng đây là một 5Tuyệt vời, bạn đã loại bỏ tất cả dữ liệu bạn không cần và lưu những nội dung hay vào một tệp hoàn toàn mới. Chạy lại tập lệnh và kiểm tra 03 để xác minh mọi thứ đã hoạt động. Nó sẽ nằm trong cùng thư mục với 1 khi bạn chạy nóBây giờ bạn đã tiến xa đến mức này, tôi cá là bạn đang cảm thấy thích một thứ gì đó khá hấp dẫn, phải không? . khiêm tốn là một đức tính tốt. Tôi có xu hướng đồng ý với bạn mặc dù. Cho đến nay, mọi việc vẫn thuận buồm xuôi gió, nhưng bạn có thể muốn vượt qua các cửa sập cho chặng cuối của hành trình Loại bỏ các quảng cáoMã hóa và giải mã các đối tượng Python tùy chỉnhĐiều gì xảy ra khi chúng tôi cố gắng sắp xếp lớp 06 từ ứng dụng Dungeons & Dragons mà bạn đang làm việc? 6Không có gì đáng ngạc nhiên, Python phàn nàn rằng 06 không thể tuần tự hóa được (điều này bạn sẽ biết nếu bạn đã từng cố gắng nói với Elf bằng cách khác)>>> 7Mặc dù mô-đun 1 có thể xử lý hầu hết các loại Python tích hợp sẵn nhưng 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ó giống như việc cố gắng lắp một cái chốt vuông vào một cái lỗ tròn—bạn cần có một cái cưa sắt và sự giám sát của cha mẹĐơn giản hóa cấu trúc dữ liệuBây giờ, câu hỏi đặt ra là làm thế nào để xử lý các cấu trúc dữ liệu phức tạp hơn. Chà, bạn có thể thử mã hóa và giải mã JSON bằng tay, nhưng có một giải pháp thông minh hơn một chút sẽ giúp bạn tiết kiệm được một số công việc. Thay vì chuyển thẳng từ kiểu dữ liệu tùy chỉnh sang JSON, bạn có thể thực hiện một bước trung gian Tất cả những gì bạn cần làm là trình bày dữ liệu của mình theo các loại tích hợp sẵn 1 đã hiểu. Về cơ bản, bạn dịch đối tượng phức tạp hơn thành một biểu diễn đơn giản hơn, mô-đun 1 sau đó dịch thành JSON. Nó giống như tính chất bắc cầu trong toán học. nếu A = B và B = C thì A = CĐể hiểu rõ điều này, bạn sẽ cần một đối tượng phức tạp để chơi cùng. Bạn có thể sử dụng bất kỳ lớp tùy chỉnh nào bạn thích, nhưng Python có một loại tích hợp có tên là 11 để biểu diễn các số phức và nó không thể tuần tự hóa theo mặc định. Vì vậy, vì những ví dụ này, đối tượng phức tạp của bạn sẽ là một đối tượng 11. Bối rối chưa?>>> 8
Một câu hỏi hay để tự hỏi khi làm việc với các loại tùy chỉnh là Lượng thông tin tối thiểu cần thiết để tạo lại đối tượng này là bao nhiêu? >>> 9Việc chuyển các số giống nhau vào hàm tạo 11 là đủ để đáp ứng toán tử so sánh 15>>> 0Việc chia nhỏ các loại dữ liệu tùy chỉnh thành các thành phần thiết yếu của chúng là rất quan trọng đối với cả quy trình tuần tự hóa và giải tuần tự hóa Mã hóa các loại tùy chỉnhĐể dịch một đối tượng tùy chỉnh thành JSON, tất cả những gì bạn cần làm là cung cấp một hàm mã hóa cho tham số 17 của phương thức 3. Mô-đun 1 sẽ gọi hàm này trên bất kỳ đối tượng nào không thể tuần tự hóa được. Đây là một chức năng giải mã đơn giản mà bạn có thể sử dụng để thực hành 1Lưu ý rằng bạn sẽ tăng 19 nếu bạn không nhận được loại đối tượng mà bạn mong đợi. Bằng cách này, bạn tránh vô tình đánh số thứ tự cho bất kỳ Yêu tinh nào. Bây giờ bạn có thể thử mã hóa các đối tượng phức tạp cho chính mình>>> 2
Cách tiếp cận phổ biến khác là phân lớp tiêu chuẩn 21 và ghi đè phương thức 22 của nó 3Thay vì tự nâng cao 19, bạn chỉ cần để lớp cơ sở xử lý nó. Bạn có thể sử dụng điều này trực tiếp trong phương thức 3 thông qua tham số 25 hoặc bằng cách tạo một phiên bản của bộ mã hóa và gọi phương thức 26 của nó>>> 4Loại bỏ các quảng cáoGiải mã các loại tùy chỉnhMặc dù phần thực và phần ảo của một số phức là hoàn toàn cần thiết, nhưng chúng thực sự không đủ để tạo lại đối tượng. Đây là điều xảy ra khi bạn thử mã hóa một số phức bằng _______27 và sau đó giải mã kết quả >>> 5Tất cả những gì bạn nhận được là một danh sách và bạn phải chuyển các giá trị vào một hàm tạo 11 nếu bạn muốn có lại đối tượng phức tạp đó. Nhớ lại cuộc thảo luận của chúng ta về. Điều còn thiếu là siêu dữ liệu hoặc thông tin về loại dữ liệu bạn đang mã hóaTôi cho rằng câu hỏi mà bạn thực sự nên tự hỏi mình là Lượng thông tin tối thiểu cần thiết và đủ để tạo lại đối tượng này là bao nhiêu? Mô-đun 1 yêu cầu tất cả các loại tùy chỉnh được thể hiện dưới dạng 30 trong tiêu chuẩn JSON. Để đa dạng, lần này bạn có thể tạo một tệp JSON có tên là 31 và thêm vào sau đây 6 đại diện cho một số phức 6Xem một chút thông minh? . Nó không thực sự quan trọng giá trị liên quan là gì. Để hack nhỏ này hoạt động, tất cả những gì bạn cần làm là xác minh rằng khóa tồn tại 7Nếu 33 không có trong từ điển, bạn chỉ cần trả lại đối tượng và để bộ giải mã mặc định xử lý nóMỗi khi phương pháp 7 cố gắng phân tích cú pháp một 6, bạn sẽ có cơ hội can thiệp trước khi bộ giải mã mặc định xử lý dữ liệu. Bạn có thể thực hiện việc này bằng cách chuyển chức năng giải mã của mình tới tham số 37Bây giờ chơi cùng loại trò chơi như trước đây >>> 8Mặc dù 37 có thể cảm thấy giống như đối trọng với tham số 17 của phương thức 3, nhưng sự tương tự thực sự bắt đầu và kết thúc ở đóĐiều này cũng không chỉ hoạt động với một đối tượng. Hãy thử đặt danh sách các số phức này vào 31 và chạy lại tập lệnh 9Nếu mọi việc suôn sẻ, bạn sẽ nhận được danh sách 11 đối tượng>>> 0Bạn cũng có thể thử phân lớp con 43 và ghi đè 37, nhưng tốt hơn hết là bạn nên sử dụng giải pháp nhẹ bất cứ khi nào có thểTất cả đã được làm xongXin chúc mừng, giờ đây bạn có thể sử dụng sức mạnh to lớn của JSON cho bất kỳ và tất cả các nhu cầu Python bất chính của bạn Mặc dù các ví dụ bạn đã làm việc ở đây chắc chắn là giả tạo và quá đơn giản, nhưng chúng minh họa quy trình làm việc mà bạn có thể áp dụng cho các tác vụ tổng quát hơn
Những gì bạn làm với dữ liệu của mình sau khi dữ liệu được tải vào bộ nhớ sẽ tùy thuộc vào trường hợp sử dụng của bạn. Nói chung, mục tiêu của bạn sẽ là thu thập dữ liệu từ một nguồn, trích xuất thông tin hữu ích và chuyển thông tin đó cùng hoặc lưu giữ hồ sơ về thông tin đó Hôm nay bạn đã có một chuyến đi. bạn đã nắm bắt và thuần hóa một số JSON hoang dã, và bạn đã quay ngược thời gian cho bữa tối. Như một phần thưởng bổ sung, việc học gói 1 sẽ giúp việc học 51 và 52 trở nên nhanh chóngChúc may mắn với tất cả những nỗ lực Pythonic trong tương lai của bạn Đánh dấu là đã hoàn thành Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Làm việc với dữ liệu JSON trong Python 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Lucas Lofaro Lucas là một Pythoneer lang thang với đầu óc tò mò và mong muốn truyền bá kiến thức cho những người tìm kiếm nó » Thông tin thêm về LucasMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Đan Joanna Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Làm cách nào để đọc danh sách các đối tượng JSON trong Python?Để tải và phân tích tệp JSON có nhiều đối tượng JSON, chúng ta cần làm theo các bước dưới đây. . Tạo một danh sách trống gọi là jsonList Đọc từng dòng tệp vì mỗi dòng chứa JSON hợp lệ. . Chuyển đổi từng đối tượng JSON thành Python dict bằng cách sử dụng json. . Lưu từ điển này vào một danh sách có tên là result jsonList Làm cách nào để phân tích mảng đối tượng JSON trong Python?Để phân tích chuỗi dữ liệu JSON thành đối tượng Python, hãy sử dụng json. loads() của gói dựng sẵn có tên json . json. phương thức loading() phân tích cú pháp chuỗi dữ liệu JSON được cung cấp và trả về một từ điển Python chứa tất cả dữ liệu từ JSON.
Cách đọc mảng JSON trong gấu trúc?Cách đọc dữ liệu mảng json bằng gấu trúc Python . nội dung tệp json. [ {"ID". "123124","Tài khoản__c". "0ereeraw334U","Active__c". "ĐÚNG VẬY"} ] Mã hiện có để chuyển đổi thành khung dữ liệu. df = pd. read_json(obj['Body'],dtype='unicode',convert_dates=False) Nhưng cách đọc dữ liệu json bên dưới theo cùng một cách, |