JSON Doğrulayıcı

Herhangi bir JSON belgesini yapıştırın ve RFC 8259’a göre temiz bir şekilde ayrıştırılıp ayrıştırılmadığını görün. Geçersiz girdi, tam olarak hangi sorunun olduğunu söyler, son dizi öğesinden sonra fazladan virgül, tırnaksız anahtar, kapatılmamış dizge, JSON’un çift tırnak istediği yerde tek tırnak, hatalı kaçış dizileri, artı ayrıştırıcının pes ettiği satır ve sütun. Bir API yanıtında, bir yapılandırma dosyasında, bir takım arkadaşınızın elle düzenlediği package.json dosyasında veya bir kod üretecinin çıktısında hata ayıklarken kullanışlıdır.

JSON doğrulama nasıl çalışır

  1. 1

    JSON'unuzu yapıştırın

    Bir yük, bir yapılandırma dosyası veya bir API yanıtı bırakın. Boşluklar sorun değil; sekmeler ve yorumlar olmaz (saf JSON'da yorum yoktur).

  2. 2

    Katı bir RFC 8259 ayrıştırıcısıyla ayrıştırın

    Doğrulayıcı, spesifikasyonun yasakladığı her şeyi reddeder: fazladan virgüller, tırnaksız anahtarlar, tek tırnaklar, `undefined`, onaltılık sayılar.

  3. 3

    Hatayı okuyun

    Başarısız olursa, ayrıştırıcının mesajını artı yaklaşık bir konum alırsınız: doğrudan ilgili karaktere gitmenize yetecek kadar.

  4. 4

    Düzeltin ve yeniden doğrulayın

    Sorunu giderin, tekrar yapıştırın ve commit veya gönderim öncesinde belgenin geçerli olduğunu onaylayın.

Katı JSON neye izin verir, ve neye vermez

Etrafta dolaşan pek çok “neredeyse JSON” biçimi var (JSON5, JSONC, HJSON, YAML benzeri melezler). JSON spesifikasyonunun kendisi küçük ve katıdır; bu doğrulayıcı belgenizin katı bir ayrıştırıcıdan sağ çıkıp çıkmadığını söyler, ki çoğu alt sistemin gerçekte çalıştırdığı budur.

Çoğu insanı yakalayan kurallar

Kural Geçerli Geçersiz
Anahtarlar çift tırnaklı dizge olmalı {"a": 1} {a: 1}
Dizgeler yalnızca çift tırnak kullanır "hello" 'hello'
Fazladan virgül yok [1, 2, 3] [1, 2, 3,]
Yorum yok (yok) // yorum ya da /* */
Sayılar: baş + yok, .5 yok 0.5 +1, .5
Yalnızca ayrılmış değişmezler true, false, null undefined, NaN
UTF-8 kodlaması Unicode dizgeleri Geçersiz bayt dizileri

Sık görülen hatalar ve anlamları

  • “Unexpected token }, kapatan kıvrımlı parantezden önce fazladan virgül var.
  • “Expected property name”, anahtar tırnaksız ya da açılış anahtarının etrafındaki tırnakları unuttunuz.
  • “Unexpected end of input”, açılan bir { veya [ kapatılmamış; parantezleri sayın.
  • “Bad control character”, bir dizge değişmezinin içinde sekme, satır sonu veya başka bir kontrol baytı var. Bunları \t, \n vb. olarak kaçırın.
  • “Duplicate key”, aslında bir JSON spesifikasyon hatası değildir (spesifikasyon benzersiz OLMALI der), ama pek çok doğrulayıcı uyarır. Doğrulayıcı bunu sabit bir hata olarak değil, bir uyarı olarak işaretler.

Daha gevşek biçimlere ihtiyacınız varsa

  • JSON5, fazladan virgüllere, yorumlara ve tek tırnaklara izin verir. Hedef biçiminiz buysa bir JSON5 ayrıştırıcısı kullanın.
  • JSONC (yorumlu JSON), VS Code ayarlarının kullandığı biçimdir. Katı ayrıştırmadan önce yorumları temizleyin.
  • YAML farklı bir biçimdir; bunun “sadece girintilenmiş JSON” olduğunu varsaymayın.

İpuçları

  • Commit etmeden önce doğrulayın. Bir package.json ya da bir CI yapılandırmasındaki yazım hatası, biri fark edene kadar tüm derlemeyi bozar.
  • İnceleme farklarını okunabilir kılmak için doğruladıktan sonra biçimli yazdırın. Tek satırlık bir JSON dosyası geçerlidir ama incelemesi içler acısıdır.
  • Büyük yükler için akışla doğrulayın (örneğin komut satırında jq). Tarayıcı içi ayrıştırma birkaç MB’ı geçince zorlanır.

Sık Sorulan Sorular

Bu araç yalnızca sözdizimsel geçerliliği denetler, düzgün biçimlendirilmiş bir JSON mu? Yapısal kurallar için (zorunlu alanlar, enum değerleri, dizge uzunlukları), bir JSON Schema doğrulayıcısı kullanın. İki adım birbirini tamamlar: en başta geçerli JSON olmayan bir belgede Schema doğrulaması çalıştırmanın anlamı yok.

Çünkü standart JSON’da yorum yoktur. // ve /* */ makul bir uzantıdır (JSONC, JSON5) ama saf JSON bunları reddeder. Katı bir tüketiciye göndermeden önce yorumları temizleyin ya da yığınınızda JSON5’i benimseyin.

Katı JSON’da geçersizdir. Spesifikasyon yalnızca sonlu sayılara izin verir. Tüketicinizin eksik veriyi nasıl ele aldığına bağlı olarak bunları dizge ("NaN", "Infinity") ya da null olarak seri hale getirin.

Hayır, doğrulama tarayıcınızda çalışır, dolayısıyla yapıştırdığınız yük sayfadan asla çıkmaz. Hassas yapılandırma dosyaları ve kimlik bilgileri içeren API yanıtları için güvenlidir.

İlgili Araçlar

Araç diğer dillerde mevcuttur