JSON düzenleyiciye geç
JSON Formatter Viewer

JSON doğrulayıcı

input.json

JSON'unuzu buraya yapıştırın

ya da bu alanın herhangi bir yerine bir .json dosyası bırakın

Biçimlendirilmiş çıktı burada görünür.

Girdi bekleniyor

Hata bölmesi ne gösterir

Yerleşik ayrıştırıcı iletileri kısadır ve tarayıcıya göre değişir — Unexpected token } neyi değiştirmeniz gerektiği konusunda neredeyse hiçbir şey söylemez. Doğrulama başarısız olduğunda bunun yerine dört şey bildirilir:

  • Satır ve sütun, ayrıştırıcının bildirdiği karakter konumundan türetilir.
  • İşaretli kaynak satırı, tam o karakterin altında; 4.000 karakterlik küçültülmüş bir satırda bile işaret görünür kalacak şekilde çerçevelenir.
  • Ayrıştırıcının ne beklediği, ham motor iletisi yerine sade bir dille yeniden yazılır.
  • Olası neden, hatanın çevresindeki kaynak aşağıdaki listeye göre incelenerek çıkarılır.

Hatalı satır düzenleyicinin kenar sütununda da işaretlenir ve Hataya git imlecinizi o karaktere koyar; düzeltirken durumun geçerliye döndüğünü görürsünüz.

Sık görülen tüm nedenler ve çözümleri

Sondaki virgül

JavaScript’te geçerli, JSON’da geçersiz. Ayrıştırıcı bir özellik adı ya da değer beklediğini bildirir, çünkü virgülden sonra bir üye daha ister.

{ "a": 1, "b": 2, }   ✗
{ "a": 1, "b": 2 }     ✓

Tek tırnak

JSON dizeleri hem anahtarlarda hem değerlerde çift tırnaklıdır. İstisnası yok.

{ 'name': 'ada' }      ✗
{ "name": "ada" }      ✓

Tırnaksız özellik adları

JavaScript nesne sabitleri anahtar olarak çıplak tanımlayıcılara izin verir; JSON vermez. Kaynak koddan kopyalanan bir parçanın doğrulamayı geçememesinin en yaygın nedeni budur.

{ name: "ada" }        ✗
{ "name": "ada" }      ✓

Yorumlar

JSON’da yorum sözdizimi yoktur — bilinçli olarak. Bir yapılandırma dosyasında not gerekiyorsa "_comment" anahtarı kullanın ya da bunu destekleyen bir biçime geçin: JSON5, YAML veya TOML. Onar, // ve /* */ yorumlarını siler; böylece veriyi en azından okuyabilirsiniz.

Python ve JavaScript sabitleri

True, False ve None yapıştırılmış bir Python repr çıktısından gelir; undefined, NaN ve Infinity JavaScript’ten. JSON’da tam olarak üç anahtar sözcük vardır, hepsi küçük harf: true, false, null. JSON’da NaN ya da sonsuzu anlatmanın yolu yoktur — null ya da bir dize kullanın.

Dize içinde kaçırılmamış karakterler

Bir dizenin içindeki gerçek satır sonu, sekme ya da kaçırılmamış çift tırnak dizeyi erken bitirir ve hata genellikle asıl hatadan birkaç belirteç sonra görünür. Bunları \n, \t ve \" olarak yazın. U+0020 altındaki ham denetim karakterlerine hiçbir zaman izin verilmez.

Birden çok üst düzey değer

Bir JSON belgesi tek bir değer taşır. Satır sonuyla ayrılmış iki nesne NDJSON’dur — farklı ve çok kullanışlı bir biçim, ama satır satır ayrıştırmanız gerekir. Onar bunu tanır ve satırları bir diziye sarar; böylece dosyanın tamamını bir kerede görebilirsiniz.

Geçerli ama riskli

Doğrulamayı geçmek, belgenin güvenle gönderilebileceği anlamına gelmez. İki şey geçerli JSON’dur ama yine de gerçek sorun çıkarır:

  • Yinelenen anahtarlar. Dilbilgisi izin verir; davranış gerçekleştirime bağlıdır. JavaScript son geçeni tutar, bu yüzden veri sessizce kaybolabilir.
  • 253−1 üzerindeki tam sayılar. JavaScript tabanlı her tüketici ayrıştırırken duyarlık yitirir. Kimlikleriniz 64 bitse dize olarak serileştirin.

Belge doğrulandıktan sonra yapının beklediğiniz gibi olup olmadığını denetlemenin en hızlı yolu ağaç görüntüleyicidir; biçimlendirme ise onu incelenebilir kılar.

Sık sorulan sorular

Hangi JSON belirtimi kullanılıyor?

RFC 8259 ve ECMA-404 uygulayan tarayıcının yerleşik ayrıştırıcısı. Bu ikisi pratikte eşdeğerdir ve RFC 8259, RFC 7159 ile RFC 4627’nin yerini alır. Burada doğrulanan bir belge Node, Python, Go ve Java’da da ayrıştırılır.

Bu, JSON’umu bir JSON Schema’ya göre denetler mi?

Hayır: sözdizimini doğrular, biçimi değil. “Bu ayrıştırılabilir JSON mu?” sorusunu yanıtlar, “sözleşmeme uyuyor mu?” sorusunu değil. Şemaya göre yapısal doğrulama şemayı gerektirir ve tarayıcı sekmesinden çok test paketinizde çalışması daha iyidir.

Bildirilen sütun neden düzenleyicimden farklı?

Sütunlar, ayrıştırıcının bildirdiği gibi 1’den başlayarak karakter olarak sayılır. Sekmeleri birkaç sütun genişliğinde gösteren düzenleyiciler, sekmeyle başlayan satırlarda daha büyük bir sayı gösterir. Hata bölmesindeki işaret her zaman doğru karakteri gösterir.

Boş bir belge geçerli JSON mu?

Hayır. RFC 8259 tam olarak bir değer ister, bu yüzden boş dosya geçersizdir. null, 0, false, "", [] ve {} tek başına geçerli belgelerdir.

Araç setinin geri kalanı

Aynı motor, aynı gizlilik — her sayfa tümüyle tarayıcınızda çalışır.