Ne işe yarar
JSON Schema, JSON verisinin biçimini tanımlayan bir sözlüktür: bir nesnenin hangi özelliklere sahip olması gerektiği, her değerin türü, izin verilen aralıklar ve kalıplar, dizi uzunlukları ve çok daha fazlası. API’ler OpenAPI belirtimlerinde, editörler yapılandırma dosyalarında otomatik tamamlama için, arka uçlar da hatalı istekleri reddetmek için kullanır.
Bu doğrulayıcı bir JSON belgesini şemaya göre denetler ve bulduğu her sorunu listeler. Her hata, verideki yerini (/tags/1 gibi bir JSON Pointer), okunabilir bir mesajı ve başarısız olan şema anahtar kelimesini gösterir; böylece veriyi ya da şemayı hızla düzeltebilirsiniz. Draft 2020-12, 2019-09, draft-07 ve draft-04 desteklenir; $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties ve biçim denetimleri dahildir.
Nasıl kullanılır
- Veriyi JSON verisi alanına, şemayı JSON Schema alanına yapıştırın ya da her iki tarafa birer dosya yükleyin. Örnek, kasıtlı birkaç hata içeren bir kullanıcı kaydı yükler.
- Sonuç siz yazdıkça güncellenir: veri geçerliyse yeşil bir rozet, değilse hata sayısı ve listesi görünür.
$schema’yı izlemek için Sürüm’ü Otomatik bırakın veya bir sürümü zorlayın. İlk hatada durmak için Tüm hataları göster’i kapatın.- Hataları kopyala, listeyi hata raporu veya kod incelemesi için düz metin olarak kopyalar.
Taraflardan biri geçerli JSON değilse, mesaj sorunun veride mi şemada mı olduğunu satır ve sütunla birlikte söyler.
Örnek
Bu şemayla:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
{"age": -1} belgesi iki hata üretir: (kök) düzeyinde zorunlu id özelliği eksik; /age değeri en küçük değer olan 0’ın altında.
İpuçları
Yanlış yazılmış özellik adlarını yakalamak için "additionalProperties": false ekleyin; aksi hâlde sessizce geçerler. Sabit değerler için enum ya da const, ürün kodu gibi dizeler için pattern kullanın. Şema büyüdüğünde tekrarlanan kısımları $defs içine taşıyıp $ref ile başvurun.
SSS
› Hangi JSON Schema sürümleri destekleniyor?
Draft 2020-12, 2019-09, draft-07 (draft-06'yı da kapsar) ve draft-04. Sürüm Otomatik olduğunda sürüm şemadaki $schema anahtar kelimesinden okunur; $schema içermeyen şemalar 2020-12 kabul edilir.
› Hatalardaki yollar ne anlama geliyor?
İlk yol, verinizde doğrulamayı geçemeyen değeri gösteren bir JSON Pointer'dır, örneğin /items/2/price; (kök) belgenin tamamı demektir. Gri satır, başarısız olan anahtar kelimeyi ve şemadaki yerini gösterir, örneğin minimum · #/properties/age/minimum.
› email ve date-time gibi biçimler denetleniyor mu?
Evet. Yaygın biçimler doğrulanır: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer ve diğerleri. Bilinmeyen biçimler, belirtimin izin verdiği gibi yok sayılır.
› Şema başka dosyalara başvurabilir mi?
Aynı şema içindeki başvurular çalışır, örneğin #/$defs/address'e işaret eden bir $ref. Hiçbir şey tarayıcınızdan çıkmadığı için harici URL'ler indirilmez; başvurulan tanımları $defs içine yapıştırın.