Kuidas kontrollida, et JSON sisaldab õigeid välju?
sobes.tech AI
Vastus AI-lt
On mitmeid lähenemisviise:
-
Väli olemasolu kontroll: Läbige oodatavad väljad ja kontrollige nende olemasolu JSON-is.
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"Väli '{field}' puudub" return True, "Kõik oodatavad väljad on olemas" except json.JSONDecodeError: return False, "Vale JSON" except Exception as e: return False, f"Viga: {e}" # Näide kasutamisest json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Väli 'city' puudub 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 Kõik oodatavad väljad on olemas -
JSON Schema kasutamine: JSON Schema on sõnastik JSON-i struktuuri valideerimiseks. See on kõige usaldusväärsem ja paindlikum lähenemisviis keerukate struktuuride jaoks.
from jsonschema import validate, SchemaError # Schema JSON-i valideerimiseks schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Kohustuslikud väljad } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON vastab skeemile" except SchemaError as e: return False, f"Skeemi viga: {e.message}" except Exception as e: return False, f"Valideerimisviga: {e.message}" # Näide kasutamisest 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 vastab skeemile invalid_data = {"name": "Bob"} # puudub age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Validatsiooni viga: 'age' on nõutav invalid_type_data = {"name": "Charlie", "age": "twenty"} # vale tüüp age result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Validatsiooni viga: 'twenty' ei ole 'integer' tüüpi -
Tüüpide ja struktuuri kontrollimise raamatukogud: Mõned keeled omavad raamatukogusid, mis võimaldavad andmestruktuuri deklaratiivselt määratleda.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Kohandatud kontrollide kirjutamine: Spetsiaalsete juhtude või keeruka loogika jaoks saab kirjutada oma valideerimisfunktsioone.
Valik sõltub JSON-i struktuuri keerukusest, rangusest nõuetest ja kasutatavatest tehnoloogiatest. JSON Schema on kõige soovitatavam lähenemisviis usaldusväärsuse ja toetuse tagamiseks.