Làm cách nào để xác minh phản hồi JSON trong Python?
def check_json_j2(): includes = r'|'.join([fnmatch.translate(x) for x in JSON_J2_INCLUDE_PATTERNS]) excludes = r'|'.join([fnmatch.translate(x) for x in JSON_J2_EXCLUDE_PATTERNS]) return_code = 0 def bool_filter(value): return True def basename_filter(text): return text.split('\\')[-1] def kolla_address_filter_mock(network_name, hostname=None): # no validation is possible for the hostname if network_name not in KOLLA_NETWORKS: raise ValueError("{network_name} not in KOLLA_NETWORKS" .format(network_name=network_name)) return "127.0.0.1" # Mock ansible hostvars variable, which is a nested dict def hostvars(): return collections.defaultdict(hostvars) # Mock Ansible groups variable, which is a dict of lists. def groups(): return collections.defaultdict(list) def validate_json_j2(root, filename): env = jinja2.Environment( # nosec: not used to render HTML loader=jinja2.FileSystemLoader(root)) env.filters['bool'] = bool_filter env.filters['basename'] = basename_filter env.filters['kolla_address'] = kolla_address_filter_mock env.filters['put_address_in_context'] = \ put_address_in_context template = env.get_template(filename) # Mock ansible variables. context = { 'hostvars': hostvars(), 'groups': groups(), 'cluster_interface': 'cluster_interface', 'storage_interface': 'storage_interface', 'inventory_hostname': 'hostname' } data = template.render(**context) json.loads(data) for root, dirs, files in os.walk(PROJECT_ROOT): dirs[:] = [d for d in dirs if not re.match(excludes, d)] for filename in files: if not re.match(excludes, filename) and \ re.match(includes, filename): fullpath = os.path.join(root, filename) try: validate_json_j2(root, filename) except (ValueError, jinja2.exceptions.TemplateError): return_code = 1 LOG.exception('%s file error', fullpath) return return_code Ký hiệu đối tượng JSON hoặc Javascript hoạt động khá tốt trong Python. Có 2 thuộc tính có thể có mà chúng ta cần xem xét để biết JSON có ở định dạng phù hợp hay không. Đầu tiên là đảm bảo rằng tất cả các dấu ngoặc kép, dấu ngoặc và dấu phẩy đều ở đúng vị trí. Thứ hai là xác thực kết quả đó với lược đồ JSON Show kiểm tra. py
Chạy thử nghiệm để xem đầu ra trông như thế nào Phần cuối
Khi chúng tôi đã tải JSON và chúng tôi biết rằng nó đúng về mặt cú pháp. Bây giờ chúng ta có thể bắt đầu thử nghiệm lược đồ JSON. Hãy tải lên bài kiểm tra đó. py một lần nữa và thêm lược đồ JSON kiểm tra. py
Đây chỉ là một ví dụ về đường dẫn hạnh phúc để xác thực lược đồ JSON. Nhưng nếu vì lý do nào đó mà chúng ta thực sự muốn LastName là một số thì sao? . Sau đó chạy chương trình và xem điều gì sẽ xảy ra Bài đăng trên blog này sẽ giúp bạn hiểu xác thực Lược đồ JSON trong Python, sử dụng 6 trình xác thực Lược đồ JSON hoàn chỉnh và tuân thủ nhấtDự án GITHUB. python-xác thực-json-lược đồ Lược đồ JSON là một đặc tả cho định dạng dựa trên JSON để xác định cấu trúc của dữ liệu JSON. Nó được viết theo dự thảo của IETF đã hết hạn vào năm 2011. Lược đồ JSON
Hiện tại, trình xác thực Lược đồ JSON hoàn chỉnh và tuân thủ nhất có sẵn cho python là 6Đưa ra dưới đây là một lược đồ JSON cơ bản, bao gồm các chi tiết cơ bản về người dùng
8 là một triển khai Lược đồ JSON cho Python. Sử dụng 8, chúng tôi có thể tạo một lược đồ theo lựa chọn của mình, vì vậy, mỗi khi chúng tôi có thể xác thực tài liệu JSON dựa trên lược đồ này, nếu nó được thông qua, chúng tôi có thể nói rằng tài liệu JSON hợp lệKeywordDescription$schema Từ khóa $schema nói rằng lược đồ này được viết theo đặc điểm kỹ thuật dự thảo v4. tiêu đềBạn sẽ sử dụng điều này để đặt tiêu đề cho lược đồ của mình. mô tảMột mô tả nhỏ về lược đồ. type Từ khóa type xác định ràng buộc đầu tiên đối với dữ liệu JSON của bạn. nó phải là một Đối tượng JSON. propertiesXác định các khóa khác nhau và các loại giá trị của chúng, giá trị tối thiểu và tối đa sẽ được sử dụng trong tệp JSON. bắt buộcĐiều này giữ một danh sách các thuộc tính cần thiết. tối thiểuĐây là ràng buộc được đặt trên giá trị và đại diện cho giá trị tối thiểu có thể chấp nhận được. ExclusiveMinimumNếu “exclusiveMinimum” xuất hiện và có giá trị boolean là true, thì phiên bản hợp lệ nếu nó hoàn toàn lớn hơn giá trị của “minimum”. tối đaĐây là ràng buộc được đặt trên giá trị và đại diện cho giá trị tối đa có thể chấp nhận được. ExclusiveMaximumNếu “exclusiveMaximum” xuất hiện và có giá trị boolean là true, thì phiên bản hợp lệ nếu nó hoàn toàn thấp hơn giá trị của “maximum”. multipleOfA thể hiện số hợp lệ đối với “multipleOf” nếu kết quả của phép chia thể hiện cho giá trị của từ khóa này là một số nguyên. maxLengthĐộ dài của một thể hiện chuỗi được định nghĩa là số ký tự tối đa của nó. minLengthĐộ dài của một thể hiện chuỗi được định nghĩa là số ký tự tối thiểu của nó. mẫuMột thể hiện chuỗi được coi là hợp lệ nếu biểu thức chính quy khớp thành công với thể hiệnBạn có thể kiểm tra một http. // json-lược đồ. org để biết danh sách đầy đủ các từ khóa có thể được sử dụng để xác định lược đồ JSON. Lược đồ trên có thể được sử dụng để kiểm tra tính hợp lệ của mã JSON sau đây Đầu tiên, cài đặt 8 bằng lệnh pip
Tập lệnh Python
Nhập Json
Nếu bạn cố chạy đoạn mã trên, đầu ra sẽ là 4Thử nghiệm với loại đầu vào khácHãy kiểm tra với đầu vào json thay thế, Nếu bạn kiểm tra tập lệnh python ở trên Phương thức 5 sẽ đưa ra một ngoại lệ nếu JSON đã cho không phải là thứ được mô tả trong lược đồ 2Trong json đầu vào ở trên, chúng tôi đã sửa đổi 6 từ số nguyên thành chuỗi 7 5Thẩm quyền giải quyếtVui lòng tham khảo python-validate-json-schema một trong những dự án của tôi, nơi tôi đã học cách triển khai ở trên Làm cách nào để nhận phản hồi JSON trong Python?Nội dung phản hồi JSON
. response. 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 để kiểm tra xem dữ liệu có phải là JSON Python không?Mô-đun json có phương thức gọi là tải. Nó tải một chuỗi json hợp lệ để tạo một đối tượng Json. Trong ví dụ này, chúng tôi tải chuỗi và kiểm tra xem không có lỗi khi tải đối tượng JSON. Nếu có lỗi, chúng tôi coi chuỗi JSON là không hợp lệ
Làm cách nào để xác minh định dạng JSON?Làm cách nào để kiểm tra xem tệp JSON có hợp lệ hay không? . Mở công cụ Trình xác thực JSON và Sao chép và Dán JSON trong Trình soạn thảo văn bản đầu vào Nếu bạn có tệp JSON, bạn có thể tải tệp lên bằng nút Tải tệp lên. . Nhấp vào nút Xác thực JSON khi dữ liệu json có sẵn trong Trình soạn thảo văn bản, thông qua Dán, Tệp hoặc URL Phản hồi JSON () Python là gì?json() trả về đối tượng JSON của kết quả (nếu kết quả được viết ở định dạng JSON, nếu không, nó sẽ báo lỗi). Các yêu cầu Python thường được sử dụng để tìm nạp nội dung từ một URI tài nguyên cụ thể. Bất cứ khi nào chúng tôi yêu cầu một URI được chỉ định thông qua Python, nó sẽ trả về một đối tượng phản hồi. |