JSON Schema Doğrulayıcı
JSON verilerinizi herhangi bir JSON Schema'ya karşı tarayıcınızda anında doğrulayın. Draft 2020-12, 2019-09 ve Draft-07 desteği, tam yollu hata mesajları. %100 gizli — yükleme yok, hesap yok, ücretsiz.
JSON Schema Doğrulayıcı Nedir?
JSON Schema doğrulayıcısı, iki JSON belgesi alan — bir veri belgesi ve bir schema belgesi — ve verinin schema'nın sözleşmesine uyup uymadığını raporlayan bir programdır. Schema, sabit bir kelime dağarcığı (type, properties, required, items, enum, oneOf, allOf, $ref, format) kullanarak alan türlerini, required anahtarları, değer aralıklarını, izin verilen enum değerlerini, regex desenlerini ve yapısal kuralları bildirir. Doğrulayıcı her iki belgeyi paralel gezer ve sıfır veya daha fazla hata yayınlar; her biri verinin içindeki bir JSON Pointer yoluna iliştirilmiştir.
Doğrulama runtime'da, güvenilmeyen giriş ile kodunuz arasındaki sınırda çalışır. TypeScript türleri derleme zamanında yok olur ve bir webhook'tan, üçüncü taraf API'den veya kullanıcının yapıştırdığı içerikten gelen JSON ile yardım edemez — JSON Schema tam da bu boşluğu doldurur. Bunu TypeScript ile (veya Python'da Pydantic ile) eşleştirin; kod tabanınızın içinde derleme zamanı, sınırda runtime garantileri elde edersiniz.
Draft 2020-12 mevcut spektir ve 2026'da yeni projeler için seçmeniz gerekendir. Daha eski draft'lar (2019-09, Draft-07, Draft-06, Draft-04) legacy kod tabanlarında yaşar — Draft-07 hâlâ Helm chart'larında, VS Code ayarlarında ve eski Ajv yapılandırmalarında yaygındır. OpenAPI 3.1 Draft 2020-12'yi doğal olarak kullanır; OpenAPI 3.0 bir Draft 4 alt kümesi kullanır.
Bu araç tamamen tarayıcınızda çalışır. JSON'unuz, schema'nız ve doğrulama çıktısı makinenizden asla çıkmaz — tescilli API sözleşmeleri ve hassas payload'lar için güvenlidir. Dahili $ref işaretçileri otomatik çözülür; harici HTTP ref'leri gizliliği korumak için tasarımdan itibaren devre dışıdır.
Bitişik JSON araçlarıyla mı çalışıyorsunuz? Yapıştırmadan önce JSON Biçimlendirici ile biçimlendirin; iki JSON belgesini JSON Diff ile karşılaştırın; JSON to YAML ve YAML to JSON ile dönüştürün. Node, Python ve tarayıcıda uçtan uca doğrulama için JSON Schema doğrulama rehberimize bakın.
// A 5-line schema that catches three real bugs
const schema = {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": { "type": "integer", "minimum": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0, "maximum": 150 }
},
"required": ["id", "email"],
"additionalProperties": false
};
// Three bugs the schema catches:
const bad = { "id": "42", "age": 200 };
// /id → type: expected integer, got string
// /email → required: missing
// /age → maximum: 200 > 150
// In Node: new Ajv().compile(schema)(bad) // false; ajv.errors has the paths
// In Python: jsonschema.validate(bad, schema)
// In the browser: this tool — same errors, same paths, no install Temel Özellikler
Çoklu Draft Desteği
Draft 2020-12 (varsayılan), 2019-09 ve Draft-07. Schema'nın $schema URI'sinden draft'ı otomatik algılar; URI olmayan schema'lar için yedek seçici sunar.
Tam Yollu Hatalar
Her hata bir JSON Pointer (örn. /user/email/0), başarısız keyword (type, required, pattern) ve tek satırlık bir mesaj içerir. Konuma atlamak için tıklayın.
Canlı Doğrulama
Yazdıkça doğrular. Hatalar gerçek zamanlı güncellenir; böylece Doğrula düğmelerine gidip gelmeden schema veya veri üzerinde hızla iterasyon yaparsınız.
format Keyword Kapsamı
email, uri, uuid, date, date-time, ipv4, ipv6, hostname, regex — gerçekten kullandığınız formatlar, savaşta sınanmış desenlerle doğrulanır.
%100 Tarayıcı Tabanlı
Girişler makinenizden asla çıkmaz. Yükleme yok, yapıştırdıklarınız üzerinde analitik yok, JSON'un localStorage'a kaydedilmesi yok. Tescilli sözleşmeler ve hassas payload'lar için güvenlidir.
Tek Tıkla Örnek Schema'lar
Yüklenebilir ön ayarlar (kayıt formu, webhook zarfı, yapılandırma dosyası, sipariş dizisi) sizi beş saniyenin altında çalışan bir doğrulamaya getirir.
Örnekler
Geçerli Nesne — required + türler
{
"id": 42,
"email": "alice@example.com",
"age": 30
} {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": { "type": "integer", "minimum": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0, "maximum": 150 }
},
"required": ["id", "email"],
"additionalProperties": false
} Schema id ve email alanlarını required olarak tanımlar ve türleri sabitler. Yukarıdaki veri geçer — her kısıt karşılanır. email'i kaldırın veya id'yi string'e çevirin; tam yollu hataları görürsünüz.
Geçersiz — eksik required + yanlış tür
{
"id": "42",
"age": 200
} {
"type": "object",
"properties": {
"id": { "type": "integer" },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "maximum": 150 }
},
"required": ["id", "email"]
} Üç hata: /id integer değil string; /email eksik; /age (200) maximum 150'yi aşıyor. Her hata kesin JSON Pointer yolunu raporlar; veride neyi düzelteceğinizi — ya da schema'yı nerede gevşeteceğinizi — tahminsiz görürsünüz.
Ayrık Birleşim — const ile oneOf
{
"type": "order.created",
"data": { "orderId": "ORD-001234", "totalUsd": 49.99 }
} {
"oneOf": [
{
"properties": {
"type": { "const": "order.created" },
"data": {
"type": "object",
"properties": {
"orderId": { "type": "string", "pattern": "^ORD-[0-9]{6}$" },
"totalUsd": { "type": "number", "minimum": 0 }
},
"required": ["orderId", "totalUsd"]
}
},
"required": ["type", "data"]
},
{
"properties": {
"type": { "const": "order.refunded" },
"data": { "type": "object", "required": ["refundId"] }
},
"required": ["type", "data"]
}
]
} Webhook zarfı doğrulaması. type değeri "order.created" olduğu için ilk oneOf dalı eşleşir. type'ı "order.refunded" yapın veya orderId desenini bozun; oneOf'un dal başına başarısızlığı nasıl raporladığını görürsünüz.
Nesne Dizisi — items + uniqueItems
[
{ "sku": "A1", "qty": 3 },
{ "sku": "B2", "qty": 5 },
{ "sku": "A1", "qty": 3 }
] {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"sku": { "type": "string", "pattern": "^[A-Z][0-9]+$" },
"qty": { "type": "integer", "minimum": 1 }
},
"required": ["sku", "qty"]
}
} İki eleman bayt-bayt aynı, bu yüzden uniqueItems tetiklenir. 0 ve 2 numaralı elemanlar çakışıyor — doğrulayıcı yinelemeyi dizi kökünde raporlar. Sepet satırı yinelemelerini ve birleştirme bug'larından kaynaklanan kargo isteklerini yakalamak için kullanışlıdır.
Nasıl Kullanılır
- 1
JSON Schema'nızı yapıştırın
Schema'nızı sağ panele bırakın. Doğrulayıcı, $schema URI'si varsa draft'ı otomatik algılar; yoksa araç çubuğundan Draft 2020-12, 2019-09 veya Draft-07'yi seçin.
- 2
JSON verinizi yapıştırın
Kontrol etmek istediğiniz JSON belgesini sol panele bırakın. Doğrulama yazarken çalışır; büyük girişler (>200 KB) yazımı akıcı tutmak için manuel Doğrula düğmesine geçer.
- 3
Hata listesini okuyun
Her hatanın bir JSON Pointer yolu, bir keyword'ü ve tek satırlık bir mesajı vardır. Bir hataya tıklayarak verinizdeki konuma atlayın, düzeltin ve sayacın gerçek zamanlı düştüğünü görün.
Yaygın JSON Schema Tuzakları
Type: integer ile number
JSON Schema 1.0'ı number sayar ama integer saymaz. Sözleşmeniz integer diyorsa, çoğu dil 1'e eşit kabul etse bile doğrulayıcı 1.0'ı reddeder. Gerçekten integer'a ihtiyacınız yoksa number seçin.
{ "qty": 1.0 } schema: { "type": "integer" } → error: not an integer { "qty": 1 } schema: { "type": "integer" } → valid Yanlış İç İçe Seviyede required
required, properties'in yanında durmalı, içinde değil. Bir özellik tanımının içindeki required dizisi sessizce yok sayılır — doğrulayıcı onu asla uygulamaz.
{ "properties": { "name": { "type": "string", "required": true } } } { "properties": { "name": { "type": "string" } }, "required": ["name"] } additionalProperties Varsayılanı true'dur
additionalProperties: false olmadan schema açıktır — fazladan herhangi bir anahtar geçer. Bunu unutmak, schema'ların "her şeyi kabul etmesinin" en yaygın nedenidir.
{ "properties": { "id": { "type": "integer" } } } accepts: { "id": 1, "foo": "bar", "x": null } { "properties": { "id": { "type": "integer" } }, "additionalProperties": false } OpenAPI 3.0 nullable ile Draft 2020-12 Tür Dizisi
OpenAPI 3.0 nullable: true kullanır; Draft 2020-12 type: ["string", "null"] kullanır. İkisini karıştırmak doğru görünen ama aslında asla null'a izin vermeyen schema'lar üretir.
{ "type": "string", "nullable": true } in 2020-12: nullable is just an unknown keyword { "type": ["string", "null"] } in 2020-12: explicitly allows null Sabitleyici Olmadan Pattern
JSON Schema regex'i varsayılan olarak her yerde eşleşir — pattern: "^[A-Z]+$" tüm string'e sabitlenir, ama pattern: "[A-Z]+" herhangi bir yerde büyük harf varsa eşleşir.
pattern: "[A-Z]+" accepts: "helloX" (because X matches)
pattern: "^[A-Z]+$" accepts only: "HELLO"
anyOf'un Kastedildiği Yerde oneOf
oneOf tam olarak bir dalın eşleşmesini ister. İki dal aynı şekli kabul ediyorsa oneOf, anyOf'un geçireceği veride başarısız olur — ve hata mesajı kafa karıştırır ("matches more than one").
oneOf: [ { type: "string" }, { type: "string", maxLength: 10 } ] on: "hi" → error: matches both anyOf: [ { type: "string" }, { type: "string", maxLength: 10 } ] on: "hi" → valid Yaygın Kullanım Senaryoları
- API İstek Doğrulaması
- Deploy etmeden önce bir istek gövdesini ve endpoint'inizin schema'sını yapıştırın. Testlerinizin kapsamadığı 400 yanıtlarını yakalayın — eksik required alanlar, yanlış türler, aralık dışı sayılar.
- Webhook Payload Doğrulaması
- Tedarikçi, handler'ınızın reddettiği bir payload mı gönderdi? Gerçek payload'u önce kendi schema'nıza, sonra tedarikçinin yayımlanmış schema'sına karşı doğrulayın. İkisi arasındaki diff sizin bug'ınızdır.
- Yapılandırma Dosyası Linting
- package.json, tsconfig.json, helm values.yaml — her yapılandırma dosyasının açık bir schema'sı vardır. Schema'yı yapıştırın, yapılandırmayı yapıştırın, yazım hatasını bulun. Deneme-yanılmayı atlayın.
- OpenAPI Bileşen Testi
- Bir OpenAPI 3.1 belgesinden bir schema bileşenini çıkarın, buraya yapıştırın, örnek payload'ları doğrulayın. Mock sunucu kurmaktan hızlı, deterministik, SDK'sız.
- Form Gönderimi Pre-Flight
- Frontend doğrulamasını bağlamadan önce örnek bir form payload'unu yapıştırın. Schema'nın beklediklerinizi reddettiğini, kabul ettiğini onaylayın, sonra aynı schema'yı istemciye ve sunucuya gönderin.
- Veri Pipeline Sözleşme Denetimi
- ETL çıktınız mı kaydı? Örnek bir satır ile aşağı akıştaki schema'yı yapıştırın. Pipeline 10.000 kaydı yeniden denemeden önce hangi üreticinin değiştiğini ve hangi anahtarların kırıldığını saptayın.
Teknik Detaylar
- Draft 2020-12 Uyumlu
- Yayımlanan Draft 2020-12 spektini uygular — keyword'ler, tür sistemi, format sözlüğü. Ajv 8.x ve ajv-formats çıktısına karşı çapraz doğrulanmıştır.
- JSON Pointer Hata Yolları
- Hatalar RFC 6901 JSON Pointer kullanır (/user/email/0). Her keyword başarısızlığı veride tek bir çözülebilir konumu işaret eder — belirsizlik yok, string araması yok.
- Dahili $ref Çözümü
- Tek bir belge içindeki $ref işaretçilerini çözer (#/$defs/foo, #/properties/bar). Döngüler tespit edilir ve raporlanır. Harici HTTP $ref'leri gizlilik için devre dışıdır.
En İyi Uygulamalar
- Daima additionalProperties: false Ayarlayın
- Giriş sözleşmelerinde (istek gövdeleri, yapılandırma dosyaları, kuyruk mesajları) bilinmeyen anahtarlar genellikle bug'lardır — yazım hataları, kazara alanlar veya saldırgan yoklamaları. Varsayılan olarak reddedin.
- Yeniden Kullanılabilir Alt Schema'lar İçin $defs Kullanın
- Aynı şekli iki kez satır içine alın, kayar. Ortak tanımları $defs'e taşıyın ve $ref ile başvurun — tek doğru kaynak, her değişiklik her yerde uygulanır.
- İş Mantığından Önce Doğrulayın
- JSON.parse'ın hemen ardından, parse edilmiş yapıya dokunmadan önce schema doğrulamasını çalıştırın. Tür daraltma, varsayılan atama ve kalıcılaştırma sözleşmenin tutmasına bel bağlar — tuttuğundan emin olun.
Sık Sorulan Sorular
JSON Schema doğrulaması nedir?
Bu doğrulayıcı hangi JSON Schema sürümlerini destekliyor?
JSON'u bir schema'ya karşı nasıl doğrularım?
JSON Schema doğrulaması ile JSON sözdizimi doğrulaması arasındaki fark nedir?
Doğru görünen JSON'u schema'm neden reddediyor?
$ref ve uzak schema referanslarını destekliyor mu?
additionalProperties: false ne yapar?
Node.js veya Python'da JSON'u schema'ya karşı nasıl doğrularım?
oneOf, anyOf ve allOf arasındaki fark nedir?
OpenAPI schema'larını destekliyor mu?
Doğrulayıcı neden JSON Schema'mın kendisinin geçersiz olduğunu söylüyor?
Araç JSON'umu veya schema'mı sunucuya gönderiyor mu?
JSON Lines (NDJSON) veya birden fazla belge doğrulayabilir miyim?
İlgili Araçlar
Tüm araçları görüntüleyin →Base64 Çözücü ve Kodlayıcı
Kodlama ve Biçimlendirme
Base64'ü ücretsiz çevrimiçi kodlayın ve çözün. Tam UTF-8 ve emoji desteğiyle gerçek zamanlı dönüştürme. %100 tarayıcıda — kayıt gerekmez.
JSON Diff Karşılaştır
Kodlama ve Biçimlendirme
Tarayıcınızda iki JSON dosyasını anında karşılaştırın. Yan yana vurgulama, RFC 6902 JSON Patch çıktısı, zaman damgaları ve kimlikler gibi gürültülü alanları yoksayma. %100 gizli, yükleme yok.
JSON Biçimlendirici ve Doğrulayıcı
Kodlama ve Biçimlendirme
JSON'u tarayıcınızda anında biçimlendirin, doğrulayın ve güzelleştirin. Sözdizimi denetimi, hata tespiti, sıkıştırma ve tek tıkla kopyalama. %100 gizli.
JSON'dan YAML'a Dönüştürücü
Kodlama ve Biçimlendirme
JSON yapıştırın, anında YAML alın. Tarayıcınızda canlı dönüştürme. K8s/Compose uyumlu, 2/4 boşluk girinti, Norway güvenli tırnak. %100 gizli, yükleme yok.
QR Kod Oluşturucu — URL, WiFi, vCard, E-posta, SMS, Konum
Kodlama ve Biçimlendirme
Ücretsiz QR kod oluşturucu. URL, WiFi, vCard, e-posta ve SMS için statik QR kodlar üretin. SVG ve PNG indirme. Süresi dolmaz, kayıt gerekmez, %100 tarayıcınızda.
Yerleşik URL Ayrıştırıcılı URL Kodlayıcı ve Çözücü
Kodlama ve Biçimlendirme
URL'leri yerleşik URL ayrıştırıcısı ile gerçek zamanlı kodlayın veya çözün. İkili mod: encodeURI ve encodeURIComponent. %100 gizli, hiçbir veri sunucuya gönderilmez.