Junior
Kaip patikrinti, ar JSON turi teisingus laukus?
sobes.tech AI
Atsakymas iš AI
Yra keli požiūriai:
-
Laukų buvimo patikrinimas: Eikite per laukus ir patikrinkite jų buvimą 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"Laukas '{field}' nėra" return True, "Visi laukia yra" except json.JSONDecodeError: return False, "Neteisingas JSON" except Exception as e: return False, f"Klaida: {e}" # Pavyzdys json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Laukas 'city' nėra 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 Visi laukia yra -
Naudojant JSON Schema: JSON Schema yra žodynas JSON struktūros validacijai. Tai patikimiausias ir lankstiausias būdas sudėtingoms struktūroms.
from jsonschema import validate, SchemaError # Schema JSON validacijai schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Būtini laukai } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON atitinka schemą" except SchemaError as e: return False, f"Schema klaida: {e.message}" except Exception as e: return False, f"Validacijos klaida: {e.message}" # Pavyzdys 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 atitinka schemą invalid_data = {"name": "Bob"} # trūksta age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Validacijos klaida: 'age' yra privalomas invalid_type_data = {"name": "Charlie", "age": "twenty"} # neteisingas age tipas result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Validacijos klaida: 'twenty' nėra 'integer' tipas -
Naudojant bibliotekas tipų ir struktūros patikrinimui: Kai kurios kalbos turi bibliotekų, leidžiančių deklaratyviai apibrėžti duomenų struktūrą.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Sukurti savo patikrinimo funkcijas: Specialiems atvejams ar sudėtingai logikai galima rašyti savo validacijos funkcijas.
Pasirinkimas priklauso nuo JSON struktūros sudėtingumo, griežtumo reikalavimų ir naudojamų technologijų. JSON Schema yra rekomenduojamiausias patikimumo ir palaikymo požiūriu.