Cum verifici dacă JSON conține câmpurile corecte?
sobes.tech AI
Răspuns de la AI
Există mai multe abordări:
-
Verificarea prezenței câmpurilor: Parcurgeți câmpurile așteptate și verificați prezența lor în 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"Lipsește câmpul '{field}'" return True, "Toate câmpurile așteptate sunt prezente" except json.JSONDecodeError: return False, "JSON invalid" except Exception as e: return False, f"Eroare: {e}" # Exemplu de utilizare json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Lipsește câmpul 'city' 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 Toate câmpurile așteptate sunt prezente -
Utilizarea JSON Schema: JSON Schema este un dicționar pentru validarea structurii JSON. Este cea mai fiabilă și flexibilă abordare pentru structuri complexe.
from jsonschema import validate, SchemaError # Schema pentru validarea JSON schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Câmpuri obligatorii } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON respectă schema" except SchemaError as e: return False, f"Eroare în schema: {e.message}" except Exception as e: return False, f"Eroare de validare: {e.message}" # Exemplu 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 respectă schema invalid_data = {"name": "Bob"} # Lipseste 'age' result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Eroare de validare: 'age' este o proprietate obligatorie invalid_type_data = {"name": "Charlie", "age": "twenty"} # Tip greșit result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Eroare de validare: 'twenty' nu este de tip 'integer' -
Utilizarea bibliotecilor pentru verificarea tipurilor și structurii: Unele limbaje dispun de biblioteci care permit definirea mai declarativă a structurii datelor.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Scrierea de funcții de validare personalizate: Pentru cazuri specifice sau logică complexă, se pot scrie funcții proprii de validare.
Alegerea metodei depinde de complexitatea structurii JSON, de cerințele de rigurozitate ale controlului și de stack-ul tehnologic utilizat. JSON Schema reprezintă abordarea cea mai recomandată pentru asigurarea fiabilității și suportului.