Hogyan ellenőrizhetjük, hogy a JSON tartalmazza-e a helyes mezőket?
sobes.tech MI
Válasz az MI-től
Különböző megközelítések léteznek:
-
Mezők meglétének ellenőrzése: Iteráljon a várt mezőkön, és ellenőrizze azok jelenlétét a JSON-ben.
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"'{field}' mező hiányzik" return True, "Minden várt mező jelen van" except json.JSONDecodeError: return False, "Érvénytelen JSON" except Exception as e: return False, f"Hiba: {e}" # Példa használat json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False 'city' mező hiányzik 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 Minden várt mező jelen van -
JSON séma használata: A JSON séma egy szótár a JSON szerkezetének validálásához. Ez a legmegbízhatóbb és legflexibilisebb megközelítés összetett struktúrákhoz.
from jsonschema import validate, SchemaError # Séma a JSON validálásához schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Kötelező mezők } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "A JSON megfelel a sémának" except SchemaError as e: return False, f"Séma hiba: {e.message}" except Exception as e: return False, f"Validálási hiba: {e.message}" # Példa használat 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 A JSON megfelel a sémának invalid_data = {"name": "Bob"} # hiányzik az age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Validálási hiba: az 'age' kötelező tulajdonság invalid_type_data = {"name": "Charlie", "age": "twenty"} # rossz típusú az age result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Validálási hiba: a 'twenty' nem 'integer' típus -
Könyvtárak használata típusok és struktúrák ellenőrzésére: Néhány nyelv rendelkezik olyan könyvtárakkal, amelyek lehetővé teszik az adatszerkezet deklaratívabb meghatározását.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Egyedi ellenőrzések írása: Speciális esetekhez vagy összetett logikához saját validációs függvényeket írhat.
A módszer kiválasztása a JSON-struktúra összetettségétől, a szigorúsági követelményektől és a használt technológiai stack-től függ. A JSON Schema a legajánlottabb megközelítés a megbízhatóság és a támogatás biztosítására.