JSON Schema nasıl oluşturulur?
- Temsil edici bir JSON örneği yapıştırın. Birden fazla öğe içeren diziler en iyi sonucu verir, çünkü öğeleri tek bir şemada birleştirilir.
- Şema sürümünü (draft 2020-12 veya draft-07) seçin; özelliklerin zorunlu olup olmayacağına, formatların algılanıp algılanmayacağına ve ek özelliklere izin verilip verilmeyeceğine karar verin.
- Şemayı kopyalayın veya indirin, ardından elle iyileştirin – örneğin açıklamalar, enum'lar ya da minimum ve maksimum değerler ekleyin.
Oluşturucu neleri çıkarır?
| JSON örneği | Şema |
|---|---|
"ada@example.com" | {"type": "string", "format": "email"} |
"2026-05-01T10:00:00Z" | date-time formatı (ayrıca date, time, uri, uuid, ipv4) |
42 / 4.5 | "integer" / "number" |
| her nesnede bulunan bir anahtar | required içinde listelenir |
| bazı dizi öğelerinde eksik olan bir anahtar | isteğe bağlı (required içinde değil) |
[1, "a", null] | "items": {"type": ["string", "integer", "null"]} |
| düz değerlerle karışık nesneler | her tür için bir şema içeren anyOf |
JSON Schema nedir?
JSON Schema, JSON verilerinin yapısını tanımlamak ve doğrulamak için kullanılan bir sözlüktür: hangi özelliklerin bulunduğunu, her birinin türünü, hangilerinin zorunlu olduğunu ve hangi değerlere izin verildiğini belirtir. OpenAPI'deki API sözleşmelerinde, yapılandırma dosyalarında, form oluşturmada ve yapay zekâ modellerinin yapılandırılmış çıktılarını doğrulamada kullanılır. Güncel sürüm 2020-12'dir; draft-07 hâlâ birçok eski araç tarafından desteklenir. Spesifikasyon json-schema.org adresinde yayımlanmaktadır.
Oluşturulan şemayı iyileştirme
- Her alanın ne anlama geldiğini belgelemek için
titlevedescriptionekleyin. - Değerleri
enum,minimum,maximum,maxLengthveyapatternile sınırlandırın. - Bilinmeyen anahtarları reddetmek için Ek özelliklere izin verme (
additionalProperties: false) seçeneğini işaretleyin. - Verileri JavaScript'te Ajv ile veya Python'da
jsonschemapaketiyle doğrulayın.
Sıkça sorulan sorular
Hangi JSON Schema sürümünü kullanmalıyım?
Yeni projeler için draft 2020-12 kullanın – güncel sürüm odur ve OpenAPI 3.1 bu sürüme dayanır. Doğrulayıcınız veya araçlarınız henüz 2020-12 sürümünü desteklemiyorsa draft-07 seçin.
Neden tüm özelliklerim zorunlu olarak işaretleniyor?
Tek bir örnek nesnede her özellik mevcut olduğundan hepsi zorunlu olarak işaretlenir. Birkaç farklı örnek içeren bir dizi kullanın veya Özellikleri zorunlu olarak işaretle seçeneğini kapatın.
Oluşturucu enum'ları veya değer aralıklarını algılayabilir mi?
Hayır. Tek bir örnek, genel olarak hangi değerlere izin verildiğini gösteremez; bu yüzden enum'lar, minimum ve maksimum değerler ve pattern'ler elle eklenmelidir.
JSON şemaya göre nasıl doğrulanır?
JavaScript için Ajv veya Python için jsonschema gibi bir doğrulama kütüphanesi kullanın. Birçok kod editörü de bir JSON dosyasını $schema özelliğinde belirtilen şemaya göre doğrular.