Πώς να ελέγξετε ότι το JSON περιέχει τα σωστά πεδία;
sobes.tech AI
Απάντηση από AI
Υπάρχουν διάφορες προσεγγίσεις:
-
Έλεγχος ύπαρξης πεδίων: Περνάμε από τα αναμενόμενα πεδία και ελέγχουμε την παρουσία τους στο 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"Το πεδίο '{field}' λείπει" return True, "Όλα τα αναμενόμενα πεδία υπάρχουν" except json.JSONDecodeError: return False, "Μη έγκυρο JSON" except Exception as e: return False, f"Σφάλμα: {e}" # Παράδειγμα χρήσης json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Το πεδίο '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 Όλα τα αναμενόμενα πεδία υπάρχουν -
Χρήση JSON Schema: Το JSON Schema είναι ένας λεξικός ορισμός για την επικύρωση της δομής του JSON. Είναι η πιο αξιόπιστη και ευέλικτη προσέγγιση για πολύπλοκες δομές.
from jsonschema import validate, SchemaError # Σχήμα για επικύρωση JSON schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Απαιτούμενα πεδία } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "Το JSON ταιριάζει με το σχήμα" except SchemaError as e: return False, f"Σφάλμα στο σχήμα: {e.message}" except Exception as e: return False, f"Σφάλμα επικύρωσης: {e.message}" # Παράδειγμα χρήσης 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 ταιριάζει με το σχήμα invalid_data = {"name": "Bob"} # λείπει το age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Σφάλμα επικύρωσης: το 'age' είναι υποχρεωτική ιδιότητα invalid_type_data = {"name": "Charlie", "age": "twenty"} # λανθασμένος τύπος του age result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Σφάλμα επικύρωσης: το 'twenty' δεν είναι τύπου 'integer' -
Χρήση βιβλιοθηκών για έλεγχο τύπων και δομής: Ορισμένες γλώσσες διαθέτουν βιβλιοθήκες που επιτρέπουν τον πιο δηλωτικό ορισμό της δομής δεδομένων.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Γράψιμο προσαρμοσμένων ελέγχων: Για ειδικές περιπτώσεις ή πολύπλοκη λογική, μπορείτε να γράψετε τις δικές σας συναρτήσεις επικύρωσης.
Η επιλογή της μεθόδου εξαρτάται από την πολυπλοκότητα της δομής JSON, τις απαιτήσεις αυστηρότητας και το τεχνολογικό στοίβαγμα που χρησιμοποιείται. Το JSON Schema είναι η πιο συνιστώμενη προσέγγιση για αξιοπιστία και υποστήριξη.