Junior
Kako proveriti da li JSON sadrži ta prava polja?
sobes.tech АИ
Одговор од АИ
Postoji nekoliko pristupa:
-
Provera prisustva polja: Prođite kroz očekivana polja i proverite njihovo prisustvo u JSON-u.
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"Polje '{field}' nedostaje" return True, "Sva očekivana polja su prisutna" except json.JSONDecodeError: return False, "Nevažeći JSON" except Exception as e: return False, f"Greška: {e}" # Primer korišćenja json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Polje 'city' nedostaje 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 Sva očekivana polja su prisutna -
Korišćenje JSON šeme: JSON Schema je rečnik za validaciju strukture JSON-a. Ovo je najpouzdaniji i najfleksibilniji pristup za složene strukture.
from jsonschema import validate, SchemaError # Šema za validaciju JSON-a schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Obavezna polja } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON odgovara šemi" except SchemaError as e: return False, f"Greška u šemi: {e.message}" except Exception as e: return False, f"Greška pri validaciji: {e.message}" # Primer korišćenja 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 odgovara šemi invalid_data = {"name": "Bob"} # nedostaje age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Greška pri validaciji: 'age' je obavezno invalid_type_data = {"name": "Charlie", "age": "twenty"} # pogrešan tip za age result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Greška pri validaciji: 'twenty' nije tipa 'integer' -
Korišćenje biblioteka za proveru tipova i strukture: Neke jezike imaju biblioteke koje omogućavaju deklarativno definisanje strukture podataka.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Pisanje prilagođenih provera: Za specifične slučajeve ili složenu logiku, možete napisati sopstvene funkcije za validaciju.
Izbor metode zavisi od složenosti JSON strukture, zahteva za strogost kontrole i korišćenog tehnološkog steka. JSON Schema je najpreporučljiviji pristup za obezbeđivanje pouzdanosti i podrške.