1. JSON, JavaScript nesnesiyle aynı sözdizimi değildir
JavaScript kodunda geçerli olan bir nesne yazımı, JSON dosyasında geçerli olmayabilir. JSON'da nesne anahtarları ve metinler çift tırnakla yazılır; yorum satırları ve sonda fazladan virgül kabul edilmez. undefined, fonksiyon veya NaN gibi JavaScript değerleri de JSON'un doğrudan değerleri değildir.
Bir yapılandırma dosyası okunurken hata aldığında önce biçimi kontrol et. Hata mesajında belirtilen konum, bazen yanlış karakterin hemen sonrasını işaret eder. Bir satırı rastgele silmek yerine o konumdaki tırnak, virgül ve kapanış işaretini birlikte incele.
2. Küçük bir geçerli örnek
Aşağıdaki veri bir rehberin alanlarını gösterir. active bir boolean, tags bir dizi, minutes bir sayıdır. Bu tiplerin doğru oluşu, arayüzde karşılaştırmaların beklenen şekilde çalışması için önemlidir. "false" metni ile false boolean değeri aynı şey değildir.
Kopyaladığın örnekte görünmeyen bir BOM veya akıllı tırnak karakteri bulunabilir. Hata ayıklarken dosyanın UTF-8 kodlamasını ve gerçek karakterleri kontrol et. Bu sorunları metni gelişi güzel dönüştüren bir işlemle gidermeden önce asıl kaynağı bulmak daha sürdürülebilir olur.
{
"title": "İlk rehber",
"active": true,
"minutes": 5,
"tags": ["javascript", "json"]
}3. Ayrıştırma ile doğrulama iki farklı adımdır
JSON.parse metnin geçerli JSON olup olmadığını kontrol eder ve bir JavaScript değerine dönüştürür. Veri uygulamanın sözleşmesine uymuyorsa bu çağrı yine de başarılı olabilir. Örneğin {"items": null} geçerli JSON'dur; fakat items.map çağrısı beklediğin gibi çalışmaz.
Sınırda veri tipi ve gerekli alanları doğrula. Hatalı veri için açık bir mesaj üret; sessizce boş liste göstermek, sunucu hatasını gerçek bir “sonuç yok” durumu gibi sunabilir. Hangi alanın isteğe bağlı olduğunu ve varsayılanının ne olduğunu da sözleşmede belirt.
const data = JSON.parse(input);
if (!data || !Array.isArray(data.items)) {
throw new Error('items alanı bir dizi olmalı');
}
const titles = data.items.map(item => {
if (!item || typeof item.title !== 'string') {
throw new Error('Her öğede title metni bulunmalı');
}
return item.title;
});4. Biçimlendirici veri kayıplarını görünür kılmalı
Bir biçimlendirici çoğunlukla metni ayrıştırıp yeniden yazar. Bu işlem JavaScript sayı aralığını aşan büyük tamsayıları yuvarlayabilir; yinelenen anahtarlar da son değerle temsil edilebilir. Bu yüzden biçimlendirilen sonucu finansal veya kimlik verisi için kayıpsız dönüşüm sayma.
Uzun sayısal kimlikleri şema izin veriyorsa metin olarak taşımak daha uygun olabilir. KodBilgini'nin JSON aracı bu sınırı ekranda açıklar ve girdiyi sunucuya göndermez. Yine de gizli değerleri gereksiz yere herhangi bir çevrimiçi araca yapıştırmamak iyi bir alışkanlıktır.
5. Sorunu kaynağında düzelt
Bozuk JSON için düzeltme yaparken dosyayı üreten sisteme de bak. Yanıt bir hata sayfasıysa tarayıcıdaki ayrıştırma mesajını değiştirmek gerçek problemi çözmez. Ağ panelindeki HTTP durumunu ve content-type değerini kontrol et; HTML gövdeyi JSON sanıyor olabilirsin.
Doğrulama katmanını veri ilk geldiğinde çalıştırmak, yanlış tipin uygulamanın farklı köşelerine taşınmasını önler. Küçük projede birkaç açık kontrol yeterli olabilir; büyüyen sözleşmelerde sürümlenen bir şema daha tutarlı sonuç verir.
Kaynaklar ve kontrol notu
Bu rehber yapay zekâ desteğiyle hazırlanmış özgün bir editoryal içeriktir. Kaynak kontrolü: 30 Eylül 2026. Örnekleri kendi proje koşullarına uyarlayarak doğrula.
Bir hata fark ettiysen editörlüğe bildir; düzeltmeleri güncelleme tarihiyle işleriz.

