JSON Schema Nasıl Çalışır?
Bir JSON Schema belgesi, geçerli JSON belgelerinin karşılaması gereken kısıtlamaları JSON formatıyla tanımlar. En üst düzey $schema, $id ve description alanları şemayı tanımlarken type, properties, required ve additionalProperties gerçek doğrulama kurallarını belirler. Bir doğrulayıcı (validator), gelen JSON belgesini bu şemayla karşılaştırır ve uyumsuzlukları bildirir. Örneğin additionalProperties: false ile şemada tanımlanmayan ekstra alanlar reddedilebilir; bu özellik API güvenliği açısından kritik öneme sahiptir.
Temel Tanımlamalar
string tipi için minLength, maxLength ve pattern (regex) kısıtlamaları kullanılır. number tipi için minimum, maximum ve multipleOf desteklenir. array tipleri için items (her elemanı) ve minItems/maxItems tanımlanabilir. required dizisi hangi alanların zorunlu olduğunu belirtir. enum belirli değerlere kısıtlamak için kullanılır. $ref başka bir şema parçasına referans verir; $defs ile yeniden kullanılabilir parçalar tanımlanır. allOf tüm şemaların sağlanmasını, anyOf herhangi birinin, oneOf ise yalnızca birinin sağlanmasını zorunlu kılar.
OpenAPI ve API Belgeleme
OpenAPI Specification, bir REST API'nin tüm endpoint'lerini, request/response gövdelerini ve parametrelerini JSON Schema ile tanımlar. swagger-ui gibi araçlar bu tanımı görsel bir dokümantasyon sayfasına dönüştürür. Kod üretici araçlar ise OpenAPI tanımlamasından otomatik olarak TypeScript tipleri, Python Pydantic modelleri veya Java DTO sınıfları üretebilir. Bu yaklaşımda API tanımı tek kaynak of truth olarak çalışır; şema değişince hem dokümantasyon hem de üretilen kod otomatik güncellenir.
LLM'lerde Yapılandırılmış Çıktı
Büyük dil modellerinin tahmin edilebilir yapılandırılmış çıktı üretmesi için JSON Schema kıyıca benimsenmiştir. OpenAI'de bir araç tanımlamasında parameters alanı JSON Schema'dır; Claude'da tool_schema aynı şekilde çalışır. Pydantic modeli JSON Schema'ya otomatik dönüştürülerek LLM'in belirli bir veri yapısını tutarlı olarak döndürmesi sağlanabilir. OpenAI Structured Outputs modu, grammer-constrained decoding ile modelin yalnızca geçerli JSON üretmesini güvence altına alır. Bu özellik ajan sistemlerinde güvenilir veri alışverişi için temel bir yapı taşıdır.
TypeScript, Zod ve Ekosistem
TypeScript ekosisteminde Zod, tip güvenli şema tanımını çalışma zamanı doğrulamasıyla birleştirir; Zod 4'te .toJSONSchema() yöntemiyle doğrudan standart çıktı üretilir. @sinclair/typebox ise TypeScript tiplerini JSON Schema olarak ifade ederek derleme ve çalışma zamanı uyumunu garantiler. Node.js tarafında AJV (Another JSON Schema Validator), JIT derleme kullanarak nanosaniye düzeyinde doğrulama performansı sunar. Python'da jsonschema paketi referans implementasyon olarak konumlanırken pydantic-core, Rust tabanlı hızlı doğrulama motoru olarak öne çıkar. Bu araçlar JSON Schema'yı yalnızca bir standart değil, tam teşekküllü bir geliştirici altyapısı hâline getirmiştir.
Sık Sorulan Sorular
JSON Schema ile JSON arasındaki fark nedir? JSON veri formatıdır; JSON Schema ise JSON verisinin yapısını tanımlayan bir meta-format. JSON Schema'nın kendisi de JSON formatındadır.
JSON Schema nerede kullanılır? API dokümantasyonu, form doğrulama, veritabanı şema doğrulama, LLM tool use ve veri boru hattı doğrulamasında yaygın olarak kullanılır.
Pydantic ve JSON Schema ilişkisi nedir? Pydantic modeli JSON Schema'ya .schema() veya .model_json_schema() metoduyla dönüştürülebilir; bu özellik LLM entegrasyonlarında ve FastAPI auto-docs üretiminde yoğun kullanılır.
$ref ile şema paylaşmak mümkün mü? Evet; $ref ve $defs kullanılarak tekrar eden şema parçaları bir kez tanımlanıp birden fazla yerde referans gösterilebilir; büyük şemalarda bakım kolaylığı açısından kritiktir.
allOf, anyOf, oneOf arasındaki fark nedir? allOf tüm şemaları karşılaması gerekir (kesişim), anyOf en az birini (birleşim), oneOf ise tam olarak birini karşılaması gerekir (özel birleşim — birden fazla eşleşirse hata verir).
JSON Schema doğrulaması performansı etkiler mi? AJV gibi optimize kütüphaneler JIT derleme kullanarak mikrosaniye düzeyinde doğrulama yapar; çoğu uygulamada ihmal edilebilir ek yük oluşturur.