Python kiểm tra xem khóa JSON có rỗng không
Dữ liệu JSON có khái niệm về các mảng và đối tượng rỗng và rỗng. Phần này giải thích cách mỗi khái niệm này được ánh xạ tới các khái niệm đối tượng dữ liệu là null và unset Show
giá trị nullJSON có một giá trị đặc biệt được gọi là null, giá trị này có thể được đặt trên bất kỳ loại dữ liệu nào bao gồm mảng, đối tượng, số và kiểu boolean
Xem xét ví dụ trước trong đó dữ liệu JSON có giá trị null được phân tích cú pháp thành một đối tượng dữ liệu, điều sau đây là đúng
Khi tuần tự hóa thành JSON, nếu một giá trị của thuộc tính trong đối tượng dữ liệu là null, thì nó sẽ được tuần tự hóa dưới dạng JSON null Bỏ đặt thuộc tínhKhông tồn tại thuộc tính từ dữ liệu JSON ánh xạ tới thuộc tính chưa đặt trong không gian đối tượng dữ liệu. Nếu thuộc tính trong đối tượng dữ liệu không được đặt (không đặt), thì thuộc tính sẽ không xuất hiện trong dữ liệu JSON tài sản trốngKhái niệm rỗng JSON áp dụng cho mảng và đối tượng như hình bên dưới
Trong trường hợp địa chỉ, một đối tượng dữ liệu địa chỉ trống được tạo. Đối tượng dữ liệu không có khái niệm về danh sách trống. Do đó, không có hành động nào được thực hiện trên đối tượng dữ liệu đối với hai thuộc tính đó Không có NULL trong Python. Thay vào đó, nó không có. JSON có kiểu dữ liệu NULL, nhưng nó không có kiểu dữ liệu Không có. Một từ điển trong Python không thể có giá trị null nhưng có thể có “null” là giá trị có thể được hiểu là một chuỗiXử lý JSON NULL trong PythonĐể xử lý JSON NULL trong Python, hãy sử dụng json. phương thức tải (). Phương thức loading() trả về giá trị null tương đương với Python, là Không có Để làm việc với dữ liệu json trong Python, hãy nhập thư viện json. Sau đó, xác định một đối tượng json bao gồm một giá trị null, mà chúng ta sẽ chuyển đổi thành Không có import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict) đầu ra{'name': 'WandaVision', 'service': None} Và bạn nhận được giá trị Không, tương đương với null trong json Đây là cách bạn có thể xử lý giá trị null của JSON trong Python Đó là nó cho hướng dẫn này Bài viết trước Cách chuyển đổi Python Set thành Tuple Bài viết tiếp theo Python os. con đường. hàm isfile() với ví dụ kranal https. //appdividend. com/ Krunal Lathiya là Kỹ sư phần mềm với hơn tám năm kinh nghiệm. Anh ấy đã phát triển một nền tảng vững chắc về các nguyên tắc khoa học máy tính và niềm đam mê giải quyết vấn đề. Ngoài ra, Krunal có kiến thức tuyệt vời về Khoa học dữ liệu và Học máy, đồng thời là chuyên gia về Ngôn ngữ Python. Krunal có kinh nghiệm với nhiều ngôn ngữ lập trình và công nghệ khác nhau, bao gồm PHP, R, Golang và JavaScript. Anh ấy cảm thấy thoải mái khi làm việc trong lĩnh vực phát triển front-end và back-end Gần đây, tôi đang lướt qua nguồn cấp dữ liệu Twitter của mình để tìm các bài viết, thư viện mới về Go, v.v. và tôi tình cờ thấy một tweet có thông báo này
Tôi thậm chí không chắc làm thế nào nó tìm được đường vào nguồn cấp dữ liệu của tôi. Tôi không theo dõi người đã nói điều đó, vì vậy lý do duy nhất khiến nó xuất hiện trong nguồn cấp dữ liệu của tôi là thẻ bắt đầu bằng # import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict)4. Bất kể, điều này gây ấn tượng với tôi như một tiếng kêu cứu lớn. Trước đây, tôi đã viết về việc sử dụng JSON với Go trong loạt bài Advent của Học viện Gopher (xem https. //Blog. gopheracademy. com/advent-2016/advanced-encoding-decoding/) và cá nhân tôi chưa bao giờ thấy JSON được xử lý kém trong Go. Có lẽ không phải là ngôn ngữ dễ nhất trên thế giới, nhưng chắc chắn không phải là "tệ" JSON có hai loại giá trị import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict) 5Sau khi liên hệ với tôi, tôi thấy rõ rằng vấn đề ở đây không phải dành riêng cho Go, mà là sự thiếu sót của JSON được sử dụng cùng với bất kỳ ngôn ngữ đánh máy nào. Trong JSON có hai loại import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict)5 hiệu quả
Thật không may (hay may mắn thay?), đó không phải là cách Go, hoặc bất kỳ ngôn ngữ đánh máy nào hoạt động. Chúng tôi không khai báo một cấu trúc (hoặc lớp) và mất một trường một cách kỳ diệu khi nó không được xác định. Trường đó sẽ luôn hiện diện và giá trị của trường đó sẽ là import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict)9 hoặc một giá trị hợp lệ Ví dụ: hãy tưởng tượng chúng ta có một cấu trúc Blog và 0 là một thuộc tính JSON tùy chọn, mã của bạn có thể trông như thế này
Điều này để lại cho chúng tôi hai tùy chọn cho 0 - nó sẽ tham chiếu đến một số nguyên hoặc nó sẽ là số không. Chúng tôi không có bất kỳ cách nào để xác định xem đó là import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict)9 là ẩn hay rõ ràng, chúng tôi chỉ biết liệu đó là con số không hay không Tại sao chúng ta cần biết sự khác biệt giữa giá trị null ẩn và rõ ràng?Hầu hết thời gian, sự khác biệt giữa khóa được đặt thành null và hoàn toàn không được đặt là không liên quan. Nếu giá trị đã xuất bản được đặt thành null trong thời gian 3, chúng tôi có thể cho rằng bài đăng đó chưa được xuất bản và tiếp tụcTrường hợp điều này phát huy tác dụng là khi chúng tôi đang thực hiện cập nhật một phần. Ví dụ: nếu chúng tôi có API JSON và chúng tôi cho phép người dùng cập nhật bài đăng trên blog của họ thông qua yêu cầu 4, thì người dùng API có thể gửi tải trọng JSON sau để cập nhật tiêu đề của bài đăng trên blog
Khi trường 5 không được cung cấp, loại 6 của chúng tôi sẽ đặt trường thành null và chúng tôi có thể cho rằng điều này có nghĩa là người dùng không muốn cập nhật trường. Nhưng điều gì sẽ xảy ra khi người dùng muốn cập nhật trường này? Thật không may, mã của chúng tôi sẽ không biết sự khác biệt giữa việc đặt trường thành null một cách rõ ràng và không cung cấp khóa. Vậy làm thế nào để chúng tôi xử lý điều này trong Go? Xác định xem khóa có được cung cấp hay khôngĐiều đầu tiên cần lưu ý là chúng ta có thể tùy chỉnh cách JSON được sắp xếp theo thứ tự cho bất kỳ loại nào bằng cách triển khai giao diện. Điều đó có nghĩa là chúng ta có thể thay thế trường 0 của mình bằng một loại mới và viết mã của riêng mình để xử lý phân tích cú pháp JSONĐiều thứ hai cần nhớ là nếu trường của chúng ta là loại con trỏ (ví dụ: 9), thì phương thức 50 của nó sẽ không bao giờ được gọi nếu giá trị là import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict)5 hoặc nếu khóa không bao giờ được cung cấp. Điều đó có nghĩa là chúng tôi cần đảm bảo rằng chúng tôi KHÔNG sử dụng con trỏ nếu chúng tôi cần xác định xem khóa đã được đặt chưa Đặt hai mẩu tin đó lại với nhau, chúng ta có thể tạo một loại 52 tùy chỉnh sẽ được sử dụng để xác định xem một giá trị đã được đặt hay chưa và giá trị đó có phải là null hay không 5Nếu chúng ta thay thế loại 53 bằng loại 52 (không phải con trỏ) thì phương thức 50 sẽ được gọi bất cứ khi nào chúng ta phân tích cú pháp một số JSON thành đối tượng 6, cho chúng ta cơ hội xử lý phần sắp xếp lại đó bằng mã tùy chỉnh của mình. Cụ thể, chúng ta có thể đặt một vài cờ để xác định liệu khóa có được cung cấp hay khôngNếu bạn muốn xem điều này hoạt động như thế nào, chúng ta có thể kiểm tra nó bằng một vài chuỗi JSON bằng mã bên dưới hoặc bạn có thể chạy nó trên Go Playground import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict)2 Tóm tắtMặc dù có thể có các thiết kế API tốt hơn để tránh vấn đề này, nhưng nếu bạn gặp phải tình huống cần hỗ trợ cả hai loại import json data = '{ "name":"WandaVision", "service":null }' # parse the data dict = json.loads(data) print(dict)5 cho khóa JSON, bạn có thể tận dụng kỹ thuật này để biến điều đó thành hiện thực. Chỉ cần thay thế trường 58 bằng bất kỳ loại nào bạn cần hỗ trợ và bạn sẽ được đặtTìm hiểu phát triển web với GoĐăng ký danh sách gửi thư của tôi và tôi sẽ gửi cho bạn một mẫu MIỄN PHÍ từ khóa học của tôi - Phát triển Web với Go. Mẫu bao gồm 19 đoạn ghi hình và một vài chương đầu tiên của cuốn sách Bạn cũng sẽ nhận được email từ tôi về các kỹ thuật mã hóa Go, các khóa học sắp tới (bao gồm cả các khóa học MIỄN PHÍ) và giảm giá khóa học Làm cách nào để kiểm tra xem giá trị JSON có phải là null không?Trả về giá trị
. isNull() JsonObject::isNull() trả về một bool cho biết liệu JsonObject có trỏ đến thứ gì đó không. true nếu JsonObject là null, false nếu JsonObject hợp lệ và trỏ đến một đối tượng.
Làm cách nào để kiểm tra khóa trong JSON python?Chương trình Python để kiểm tra xem khóa có tồn tại trong chuỗi JSON hay không Để truy cập các giá trị, bạn nên chuyển đổi chuỗi JSON thành từ điển python bằng cách sử dụng 'json. loading()' sau khi nhập mô-đun 'json'. Sau đó, bạn có thể kiểm tra xem một khóa có tồn tại trong từ điển hay không và nếu nó tồn tại, bạn có thể truy cập giá trị.
Khóa JSON có thể rỗng không?JSON có hai loại giá trị null
. Khi khóa được cung cấp và giá trị được nêu rõ ràng là null . Khi khóa không được cung cấp và giá trị hoàn toàn là null.
Làm cách nào để kiểm tra xem giá trị có tồn tại trong đối tượng JSON python không?JsonObject. containsKey() kiểm tra xem khóa có tồn tại trong đối tượng được trỏ bởi JsonObject hay không. Nếu JsonObject là null, hàm này trả về false. |