JSON'un doğru alanları içerdiğini nasıl kontrol edilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Mevcut birkaç yaklaşım vardır:
-
Alanların varlığını kontrol etme: Beklenen alanlar üzerinde yineleme yapın ve bunların JSON'da var olup olmadığını kontrol edin.
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}' alanı eksik" return True, "Tüm beklenen alanlar mevcut" except json.JSONDecodeError: return False, "Geçersiz JSON" except Exception as e: return False, f"Hata: {e}" # Kullanım örneği json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False 'city' alanı eksik 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 Tüm beklenen alanlar mevcut -
JSON Schema kullanımı: JSON Schema, JSON yapısını doğrulamak için kullanılan bir sözlüktür. Bu, karmaşık yapılar için en güvenilir ve esnek yaklaşımdır.
from jsonschema import validate, SchemaError # JSON doğrulama şeması schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Zorunlu alanlar } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON şemaya uygun" except SchemaError as e: return False, f"Şema hatası: {e.message}" except Exception as e: return False, f"Doğrulama hatası: {e.message}" # Kullanım örneği 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 şemaya uygun invalid_data = {"name": "Bob"} # 'age' eksik result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Doğrulama hatası: 'age' zorunlu özellik invalid_type_data = {"name": "Charlie", "age": "twenty"} # Yanlış tip result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Doğrulama hatası: 'twenty' 'integer' değil -
Tip ve yapı doğrulama kütüphanelerinin kullanımı: Bazı diller, veri yapısını daha deklaratif şekilde tanımlamaya izin veren kütüphanelere sahiptir.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Özelleştirilmiş doğrulama fonksiyonları yazma: Belirli durumlar veya karmaşık mantıklar için kendi doğrulama fonksiyonlarınızı yazabilirsiniz.
Yöntem seçimi, JSON yapısının karmaşıklığına, kontrolün katılığına ve kullanılan teknolojik yığınına bağlıdır. JSON Schema, güvenilirliği ve desteği sağlamak için en önerilen yaklaşımdır.