JSON Formatter + Tree Viewer

JSON Sözdizimini Doğrula: Online JSON Doğrulayıcı

JSON yapıştırın ve anında ayrıştırılıp ayrıştırılmadığını görün. Yaygın sözdizimi hatalarını yakalar: sonda virgül, tek tırnak, tırnaksız anahtarlar, eksik parantezler.

Verileriniz tarayıcınızdan çıkmaz.

Editör yükleniyor...

Editör yükleniyor...

Bu Örnekteki Sözdizimi Hatası

Yukarıdaki girdi neredeyse geçerli JSON’dur. Sorun, ikinci kullanıcı nesnesinde false değerinden sonra gelen sonda virgüldür:

{"name": "Bob", "active": false,}

Bu virgülü kaldırın ve belge geçerli olur:

{
  "users": [
    {"name": "Alice", "active": true},
    {"name": "Bob", "active": false}
  ]
}

Bu, geliştiricilerin karşılaştığı en yaygın JSON hatasıdır ve JavaScript tolere ettiği için gözden kaçırmak kolaydır.

JSON’ı Geçerli Yapan Nedir

JSON sözdizimi RFC 8259 ile tanımlanır. Kurallar çoğu insanın beklediğinden daha basittir. Geçerli bir JSON belgesi şunlardan biridir: bir nesne, dizi, string, sayı, boolean (true veya false) veya null. Nesneler, anahtar-değer çiftleri koleksiyonlarıdır. Anahtarlar string olmalıdır (çift tırnaklı). Değerler herhangi bir JSON değeri olabilir. Diziler, sıralı JSON değer listeleridir.

Geliştiricileri en sık takılan yapısal kurallar:

Sonda virgüller

Bir dizideki son öğe veya bir nesnedeki son anahtar sonda virgül içermemelidir. [1, 2, 3,] geçersizdir. {"a": 1, "b": 2,} geçersizdir.

String tırnaklama

Tüm stringler çift tırnak kullanmalıdır. 'Alice' geçerli JSON değildir. "Alice" geçerlidir.

Anahtar tırnaklama

Nesne anahtarları tırnaklı stringler olmalıdır. {name: "Alice"} JSON değildir. {"name": "Alice"} JSON’dur.

Yorum yok

JSON’da yorum sözdizimi yoktur. // yorum ve /* yorum */ ayrıştırma hatasına neden olur. Bu, yapılandırma dosyalarında yorumları destekleyen dillerden gelenleri şaşırtır.

Özel float değerleri

NaN, Infinity ve -Infinity geçerli JSON değerleri değildir. JavaScript NaN değerini JSON.stringify() ile JSON’a serileştirmeye çalışırsanız null alırsınız. Python’un json.dumps() varsayılan olarak ValueError fırlatır.

En Yaygın 5 JSON Sözdizimi Hatası

HataÖrnekDüzeltme
Sonda virgül{"a": 1,}{"a": 1}
Tek tırnaklı stringler{'key': 'value'}{"key": "value"}
Tırnaksız anahtarlar{key: "value"}{"key": "value"}
Yorumlar{"a": 1 // not}Yorumları kaldırın
NaN veya undefined{"val": NaN}null ile değiştirin

Komut Satırında JSON Doğrulama

Tarayıcı olmadan hızlı doğrulama için jq standart araçtır. Girdi geçersiz JSON ise sıfır olmayan bir kodla çıkar, bu da betiklerde kullanışlı olmasını sağlar.

Bir dosyayı doğrulama:

jq . file.json

Bir string’i doğrulama:

echo '{"name": "Alice",}' | jq .
# parse error (Expected another key-value pair or '}')

Python’un standart kütüphanesi de herhangi bir bağımlılık olmadan doğrulama yapar:

python3 -m json.tool file.json

CI boru hatları için her iki araç da hatalı girdide yüksek sesle başarısız olan doğrulama adımları olarak çalışır.

JSON vs JSONC vs JSON5

FormatYorumlarSonda virgüllerTek tırnaklarKullanım alanı
JSONHayırHayırHayırVeri alışverişi, API’ler
JSONCEvetEvetHayırYapılandırma dosyaları (VS Code)
JSON5EvetEvetEvetYapılandırma dosyaları (Babel, ESLint)

Bir API oluşturuyor veya bir kütüphane tarafından ayrıştırılacak veri yazıyorsanız, katı JSON kullanın. Belirli bir aracın okuyacağı bir yapılandırma dosyası yazıyorsanız, o aracın hangi formatı beklediğini kontrol edin. Bunları karıştırmak, yapılandırma dosyaları standart ayrıştırıcılara aktarıldığında sessiz hataların yaygın bir kaynağıdır.

Spesifikasyon

RFC 8259, 2017’de yayınlanan mevcut JSON spesifikasyonudur. RFC 7159’un yerini almıştır. Spesifikasyon yaklaşık 20 dakikada okunabilir ve bir kez göz atmaya değer. Dilbilgisini resmi olarak tanımlar, sayı hassasiyetini kapsar ve UTF-8 kodlamasını belirtir. Spesifikasyondan önemli bir nokta: bir JSON ayrıştırıcısının bir nesnedeki yinelenen anahtarları kabul etmesine veya reddetmesine izin verilir. Çoğu ayrıştırıcı bunları kabul eder ve son değeri kullanır, ancak davranış tanımsızdır ve buna güvenmemelisiniz.