JSON'ı Doğru Formatlamak Neden Zaman Kazandırır
Formatlanmamış JSON ile hata ayıklamanın neden zor olduğu.
Özet
Tek satıra sıkıştırılmış bir JSON çıktısında eksik bir virgül veya parantez fark etmek çok zordur. Girintili ve renklendirilmiş bir görünüm, yapıdaki hatayı gözle görünür hale getirir.
Adım adım
- Ham JSON çıktısını formatlama aracına yapıştırın.
- Girintili görünümde yapıyı inceleyin.
- Kırmızıyla işaretlenen hatalı kısmı bulun.
- Düzeltilmiş JSON'ı kopyalayıp kullanın.
Neden önemli?
Formatlama sadece göze hoş görünmekle ilgili değildir. Girintili bir JSON'da hangi alanın hangi nesnenin içinde olduğunu bir bakışta görürsünüz, iç içe geçmiş yapılarda kaybolmazsınız. Ekip içinde paylaşılan yapılandırma dosyaları tutarlı biçimde formatlandığında, sürüm kontrolündeki farklar da yalnızca gerçekten değişen satırları gösterir. Tek satırlık bir dosyada küçük bir değişiklik bile tüm satırın değişmiş gibi görünmesine yol açar.
Formatlama ve küçültme ne zaman?
Okunabilir, girintili hal geliştirme ve hata ayıklama sırasında işe yarar. Küçültülmüş (minify edilmiş) hal ise boşlukları atarak dosyayı küçültür ve ağ üzerinden gönderilen veride tercih edilir. İkisi aynı veriyi taşır; biri insanlar, diğeri makineler için. Çalışırken formatlı haliyle düzenleyip, yayına alırken küçültmek yaygın bir düzendir. Küçültülmüş bir dosyada hata aramanız gerekirse, önce onu formatlayıcıdan geçirin; aynı veriyi okunabilir halde görmek için kaynak dosyayı aramanıza gerek kalmaz.
Formatlayıcının yakaladığı tipik hatalar
- Son öğeden sonra bırakılmış virgül. JavaScript bunu kabul etse de JSON standardı etmez.
- Tek tırnak kullanımı. JSON'da anahtarlar ve metin değerleri çift tırnak ister.
- Dosyaya eklenmiş yorum satırları. Standart JSON yorum desteklemez.
- Tırnaksız anahtarlar ya da undefined, NaN gibi JSON'da karşılığı olmayan değerler.
- Bir metin değerinin içinde kaçırılmamış çift tırnak veya ters eğik çizgi.
Örnek bir senaryo
Bir geliştirici, ödeme servisinden dönen yanıtın neden uygulamada hata verdiğini anlamaya çalışıyor. Log dosyasında yanıt tek satır halinde, birkaç bin karakter uzunluğunda duruyor. Yanıtı formatlayıcıya yapıştırınca yapı netleşiyor: beklediği "amount" alanı kök seviyede değil, "transaction" nesnesinin içinde yer alıyor. Sorun JSON'ın geçersiz olması değil, kodun yanlış seviyede arama yapmasıymış. Girintili görünüm olmadan bu farkı satır içinde bulmak çok daha uzun sürecekti.
Küçük bir alışkanlık önerisi
Bir JSON'ı elle düzenledikten sonra, kaydetmeden ya da birine göndermeden önce bir kez doğrulamadan geçirin. Elle yapılan düzenlemelerde en sık hata, yeni eklenen satırdan önceki virgülün unutulmasıdır ve bu tek karakter bütün dosyanın okunamamasına neden olur. Hata mesajı genelde sorunun olduğu yeri değil, okuyucunun takıldığı bir sonraki satırı gösterir; bu yüzden işaretlenen satırın bir üstüne de bakın.