araç köşesi

JSON'dan JSON Schema Üretme

Örnek JSON'dan type, properties, items ve required alanları dolu bir JSON Schema taslağı üretin

Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.

Nasıl çalışır?

JSON Schema, bir JSON verisinin hangi alanları ve türleri taşıması gerektiğini yazan kurallar dosyasıdır; bir API'ye gelen isteği ya da bir yapılandırma dosyasını doğrulamak için kullanılır. Boş sayfadan yazmak yerine gerçek bir örnek veriyi sol panele yapıştırın; sağ panelde type, properties, items ve required alanları dolu bir şema oluşur. Örnekteki "tedarikci" nesnesi kendi properties bloğunu alır, "varyantlar" dizisi items ile tanımlanır. Dizideki kayıtlar tek şemada birleşir: "indirimli" yalnız ikinci varyantta olduğu için required listesine girmez, "renk" ve "hacim_ml" iki kayıtta da olduğu için girer. 349.9 number, 12 integer olur; "not" gibi yalnız null görülen alan type: null alır. Dize değeri tarih-saat ya da e-posta biçimine tam uyuyorsa format eklenir. Çıkan şema bir taslaktır: izin verilen değer listesi (enum), en küçük değer (minimum) ya da desen (pattern) gibi kuralları veriyi tanıyan siz eklemelisiniz.

Bu araç json to json schema, json schema generator, json schema from json aramalarıyla da biliniyor.

JSON Schema nedir?

JSON Schema, bir JSON belgesinin yapısını yine JSON ile anlatan bir kural dilidir: hangi alanların bulunacağını (properties, required), türlerini (type), dizinin öğelerini (items) ve değer sınırlarını (minimum, pattern, enum) tanımlar. Bir doğrulayıcı kütüphane şemayı okuyup gelen veriyi karşılaştırır ve uymayan her yeri yoluyla bildirir. OpenAPI belgeleri ve pek çok editörün otomatik tamamlaması bu dile dayanır.

required ve null nedir?

JSON Schema'da required, bir alanın nesnede bulunmak zorunda olduğunu söyler; alanın değeri hakkında hiçbir şey söylemez. Bu yüzden {"not": null} kaydında not alanı vardır ve required'ı karşılar; değerinin null olabilmesi için ayrıca türüne null eklenmelidir. Eksik alan ile null değerli alan farklı iki durumdur ve bu araç ikisini ayrı ayrı işaretler.

JSON Schema ile örnek JSON arasındaki fark nedir?

Örnek JSON tek bir verinin kendisidir: bir siparişin o anki hâlini gösterir. JSON Schema ise bütün siparişlerin uyması gereken kuralı yazar: hangi alanlar zorunlu, hangi türde, hangi değer aralığında. Bir örnekten şema çıkarmak kuralın iskeletini verir, ama örnekte görünmeyen durumları (başka bir para birimi, boş liste, çok uzun bir ad) bilemez. Bu yüzden üretilen şemayı gerçek kuralı bilen biri gözden geçirmeli ve sınırları eklemelidir.

Tip nasıl çıkarılır: birleştirme, null ve karışık türler

Araç yalnız gördüğünü yazar. Dizideki bütün kayıtlar tek bir şemada birleşir; bir alan her kayıtta varsa required listesine girer, bir kayıtta bile eksikse girmez. Null görülen alan required'dan düşmez ama türüne null eklenir: "type": ["string", "null"]. Bir alanda iki farklı tür görülürse (bir kayıtta sayı, ötekinde metin) şema anyOf ile iki seçeneği de kabul eder. Tam sayı ile ondalıklı sayı bir arada görülürse ortak tür number olur.

Boş dizinin öğeleri hakkında bilgi olmadığı için items: {} yazılır; bu "her değer geçer" demektir. Tarih, tarih-saat ve e-posta için format ancak alanın bütün değerleri biçime tam uyduğunda eklenir; 2026-02-30 gibi takvimde olmayan bir gün format almaz. Draft 2020-12'de format varsayılan olarak yalnız bilgi amaçlıdır; doğrulayıcınızda format denetimini ayrıca açmanız gerekir (ör. Ajv'de ajv-formats).

  • {"a": 1} → "a": {"type": "integer"}, "required": ["a"]
  • [1, "x"] → "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}
  • [] → "items": {}
  • {"t": "2026-09-27T10:30:00+03:00"} → "format": "date-time"

Hangi sürümü seçmeli, şemayı nerede kullanmalı

Draft 2020-12 güncel sürümdür; OpenAPI 3.1, VS Code'un JSON doğrulaması ve güncel Ajv, jsonschema (Python) sürümleri bunu destekler. Kullandığınız araç yalnız draft-07'yi tanıyorsa (eski Ajv sürümleri, bazı kod üreticileri) Draft-07 seçin; bu araçta iki sürümün çıktısı yalnız $schema satırında ayrılır, çünkü kullanılan anahtar kelimeler (type, properties, items, required, anyOf, format) ikisinde de aynıdır.

Şemayı API isteklerini sunucuda doğrulamak, bir yapılandırma dosyasına editörde otomatik tamamlama ve hata işareti eklemek ya da bir veri dosyasının biçimini ekip içinde belgelemek için kullanabilirsiniz. required listesini boş seçmek, eksik alanlara izin veren gevşek bir şema verir; yalnız türleri denetlemek istediğiniz durumlar için uygundur.

Sık sorulanlar

JSON'dan JSON Schema nasıl oluşturulur?

Doğrulamak istediğiniz verinin bir örneğini bu sayfanın sol paneline yapıştırın. Sağ panelde type, properties, items ve required alanları dolu bir şema oluşur. Şemayı kopyalayın ya da indirin, sonra enum, minimum veya pattern gibi veriye özgü kuralları kendiniz ekleyin.

required listesine hangi alanlar giriyor?

Örnekteki her kayıtta bulunan alanlar. Bir dizideki kayıtlardan birinde bile eksik olan alan isteğe bağlı sayılır. Değeri null olan alan yine required'da kalır, ama türüne null eklenir. Hiçbir alanı zorunlu tutmak istemiyorsanız required seçeneğini Boş yapın.

Draft-07 ile 2020-12 arasında ne fark var?

2020-12 daha yeni sürümdür; dizi öğelerini sıra sıra tanımlayan prefixItems ve $defs gibi yenilikler getirir. Bu araç yalnız iki sürümde aynı çalışan anahtar kelimeleri kullandığı için çıktı $schema satırı dışında aynıdır; seçiminizi doğrulayıcınızın desteklediği sürüme göre yapın.

Yapıştırdığım JSON bir sunucuya gidiyor mu?

Hayır. Şema tamamen tarayıcınızda çıkarılır; müşteri kaydı ya da iç sistem verisi içeren bir örnek bile bu sayfadan çıkmaz. Sayfa yüklendikten sonra internet bağlantısı olmadan da çalışır.