Junior
Ako skontrolovať, či JSON obsahuje správne polia?
sobes.tech AI
Odpoveď od AI
Existuje niekoľko prístupov:
-
Kontrola prítomnosti polí: Prejdite cez očakávané polia a skontrolujte ich prítomnosť 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"Políčko '{field}' chýba" return True, "Všetky očakávané polia sú prítomné" except json.JSONDecodeError: return False, "Neplatný JSON" except Exception as e: return False, f"Chyba: {e}" # Príklad použitia json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Políčko 'city' chýba 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šetky očakávané polia sú prítomné -
Použitie JSON schémy: JSON Schema je slovník na validáciu štruktúry JSON. Je to najspoľahlivejší a najflexibilnejší prístup pre zložité štruktúry.
from jsonschema import validate, SchemaError # Schéma na validáciu JSON schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Povinné polia } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON zodpovedá schéme" except SchemaError as e: return False, f"Chyba v schéme: {e.message}" except Exception as e: return False, f"Chyba pri validácii: {e.message}" # Príklad použitia 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 zodpovedá schéme invalid_data = {"name": "Bob"} # chýba age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Chyba pri validácii: 'age' je povinné invalid_type_data = {"name": "Charlie", "age": "twenty"} # nesprávny 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 pri validácii: 'twenty' nie je typu 'integer' -
Použitie knižníc na kontrolu typov a štruktúry: Niektoré jazyky majú knižnice, ktoré umožňujú deklaratívne definovať štruktúru dát.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Vytvorenie vlastných kontrol: Pre špecifické prípady alebo zložitú logiku môžete napísať vlastné validačné funkcie.
Výber metódy závisí od zložitosti JSON štruktúry, požiadaviek na prísnosť kontroly a používaného technologického stacku. JSON Schema je najodporúčanejší prístup na zabezpečenie spoľahlivosti a podpory.