Junior
Jak zkontrolovat, že JSON obsahuje správná pole?
sobes.tech AI
Odpověď od AI
Existuje několik přístupů:
-
Kontrola přítomnosti polí: Procházejte očekávaná pole a kontrolujte jejich přítomnost v JSON.
import json def check_json_fields(json_string, expected_fields): try: data = json.loads(json_string) for field in expected_fields: if field not in data: return False, f"Pole '{field}' chybí" return True, "Všechna očekávaná pole jsou přítomna" except json.JSONDecodeError: return False, "Neplatný JSON" except Exception as e: return False, f"Chyba: {e}" # Příklad použití json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Pole 'city' chybí json_data_valid = '{"name": "Bob", "age": 25}' expected_valid = ["name", "age"] result_valid, message_valid = check_json_fields(json_data_valid, expected_valid) print(result_valid, message_valid) # True Všechna očekávaná pole jsou přítomna -
Použití JSON schématu: JSON Schema je slovník pro validaci struktury JSON. Je to nejspolehlivější a nejflexibilnější přístup pro složité struktury.
from jsonschema import validate, SchemaError # Schéma pro validaci JSON schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Povinná pole } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON odpovídá schématu" except SchemaError as e: return False, f"Chyba ve schématu: {e.message}" except Exception as e: return False, f"Chyba validace: {e.message}" # Příklad použití valid_data = {"name": "Alice", "age": 30, "city": "New York"} result_valid, message_valid = validate_json_with_schema(valid_data, schema) print(result_valid, message_valid) # True JSON odpovídá schématu invalid_data = {"name": "Bob"} # chybí age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Chyba validace: 'age' je povinné invalid_type_data = {"name": "Charlie", "age": "twenty"} # špatný typ age result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Chyba validace: 'twenty' není typu 'integer' -
Použití knihoven pro kontrolu typů a struktury: Některé jazyky mají knihovny, které umožňují deklarativnější definici datové struktury.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Vytvoření vlastních kontrol: Pro specifické případy nebo složitou logiku můžete napsat vlastní validační funkce.
Výběr metody závisí na složitosti JSON-struktury, požadavcích na přísnost kontroly a používaném technologickém stacku. JSON Schema je nejvíce doporučený přístup pro zajištění spolehlivosti a podpory.