JSON Hatalarını Anlama ve Biçimlendirme Rehberi
1. JavaScript Nesneleri ile RFC 8259 JSON Farkı
Yazılım geliştirmede en yaygın hatalardan biri, serbest JavaScript nesne gösterimi (JS Object Literal) ile resmi RFC 8259 JSON standardını karıştırmaktır. JavaScript kod yazarken tek tırnak, tırnaksız anahtarlar, yorum satırları ve son virgüller serbesttir; ancak standart bir JSON ayrıştırıcısı (parser) bu kuralların hiçbirini kabul etmez.
Bir API veya yapılandırma dosyası katı JSON beklediğinde bu tür esnek sözdizimleri anında çalışma zamanı (runtime) hatasına neden olur.
2. En Çok Karşılaşılan 4 JSON Hatası
Hata 1: Son Eleman Virgülü (Trailing Comma)
× Hatalı Kullanım:
{
"ad": "GoToolstack",
"durum": "aktif",
}
Ayrıştırıcı Uyarısı: Trailing comma in object is not allowed at position 42
✓ Doğru Çözüm: Son anahtar-değer çiftinin ardından gelen virgülü silin.
Hata 2: Çift Tırnak Yerine Tek Tırnak Kullanımı
× Hatalı Kullanım:
{'durum': 'basarili'}
Ayrıştırıcı Uyarısı: Expected double-quoted property name in JSON at position 1
✓ Doğru Çözüm: JSON sözdiziminde dizeler ve anahtarlar mutlaka çift tırnak (") ile sarılmalıdır.
Hata 3: Tırnaksız Özellik Adı (Unquoted Keys)
× Hatalı Kullanım:
{sayi: 42}
Ayrıştırıcı Uyarısı: Expected property name or '}' in JSON at position 1
✓ Doğru Çözüm: Anahtar adları mutlaka çift tırnak içine alınmalıdır ({"sayi": 42}).
Hata 4: Gövde İçinde Yorum Satırları
× Hatalı Kullanım:
// Sunucu ayarları
{"port": 8080}
Ayrıştırıcı Uyarısı: Unexpected character '/' at position 0
✓ Doğru Çözüm: Standart JSON yorum satırlarına izin vermez. Veriyi aktarmadan önce yorumları temizleyin.
3. 64-Bit Büyük Tamsayı Tuzağı: Kayıpsız (Lossless) Hassasiyet
Standart JavaScript motorlarında tüm sayılar IEEE 754 64-bit çift duyarlıklı kayan nokta formatında saklanır. Güvenli en büyük tamsayı sınırı şudur:
Number.MAX_SAFE_INTEGER = 9.007.199.254.740.991 (2^53 - 1)
Bir API veritabanı ID'si veya işlem numarası olarak 9007199254740993 gönderdiğinde, standart JSON.parse() bunu fark ettirmeden 9007199254740992 sayısına yuvarlar ve veri bozulur. GoToolstack'in özel lossless formatlayıcısı bu tamsayıları matematiksel taşmaya uğratmadan korur.
4. Teknik Sınırlamalar ve Sınır Koşulları
Tarayıcı Belleği ve Büyük Dosyalar: 50 MB'ı aşan devasa JSON dökümlerini tarayıcıda biçimlendirmek ana iş parçacığında (UI thread) kısa süreli donmaya yol açabilir. Çok gigabaytlık log analizlerinde jq gibi komut satırı araçları tercih edilmelidir.
- Özel Sayı Değerleri:
NaN,Infinityve-Infinitygeçerli JSON değerleri değildir. - Tanımsız ve Fonksiyonlar:
undefinedve JavaScript fonksiyonları JSON formatına serileştirilemez. - Döngüsel Referanslar: Kendine referans veren döngüsel nesneler (circular references) JSON yapısına dönüştürülemez.