iToverDose/Yazılım· 8 TEMMUZ 2026 · 12:04

JSON hatalarıyla karşılaşıyorsanız: 'Beklenmeyen token' aslında ne anlama geliyor?

JSON verilerini parse ederken 'Beklenmeyen token' hatasıyla mı karşılaşıyorsunuz? Pekâlâ, bu sorun genellikle JSON’un kendisinden değil, yanıtın HTML olması ya da verinin iki kez parse edilmesinden kaynaklanıyor. Hataların gerçek nedenini ve çözümünü öğrenin.

DEV Community3 dk okuma0 Yorumlar

JSON verilerini uygulamalarınızda işlerken en sık karşılaşılan hatalardan biri olan ‘Beklenmeyen token’ hatası, çoğu zaman JSON formatındaki bir sorundan değil, yanıtın beklenmedik bir şekilde HTML olması ya da verinin gereksiz yere iki kez parse edilmesinden kaynaklanıyor. Bu durumda, sorunu JSON’un kendisinde aramak yerine, yanıtı üreten kaynağa odaklanmak gerekiyor.

Pek çok geliştirici, JSON.parse() fonksiyonunu çalıştırdığında veya API’lerden gelen yanıtı işlerken bu hata mesajıyla karşılaşabiliyor. Oysa ki bu hatanın altında yatan gerçek nedenler oldukça basit ve doğrudan ilgili olabiliyor. Gelin, bu yaygın JSON hatalarının arkasındaki gerçekleri ve nasıl çözülebileceklerini birlikte inceleyelim.

Yanıt HTML olabilir: ‘<’ token’ı uyarı işareti

‘Beklenmeyen token <’ hatasıyla karşılaştığınızda, büyük olasılıkla yanıt olarak HTML alıyorsunuz. Bu durumda, JSON yerine bir HTML sayfası (404 hatası, oturum yenileme sayfası, Cloudflare doğrulama sayfası vb.) döndürülmüş demektir. Bu sorun, genellikle API endpoint’inin yanlış yazılması, yetkilendirme eksikliği ya da token’ın süresinin dolmuş olmasından kaynaklanır.

Örneğin, bir API çağrısında bulunurken:

const yanıt = await fetch(apiUrl);
const metin = await yanıt.text();
console.log(metin.substring(0, 200));
// <!DOCTYPE html>
// <html>
//   <head><title>404 - Sayfa bulunamadı</title></head>

Bu çıktı, yanıtın HTML olduğunu açıkça gösteriyor. Dolayısıyla, sorunu JSON parse işleminde aramak yerine, API endpoint’inin doğruluğunu, kimlik doğrulama token’larının geçerliliğini ve sunucunun durumunu kontrol etmek gerekiyor.

Veri iki kez parse edildiğinde ortaya çıkan ‘o’ hatası

‘Beklenmeyen token o at position 1’ hatası, genellikle yanıtın zaten parse edilmiş bir JSON nesnesi olarak geri döndürüldüğü ve ardından ikinci bir parse işlemine tabi tutulduğu durumlarda ortaya çıkar. Örneğin, fetch().then(r => r.json()) kullanırken, r.json() fonksiyonu otomatik olarak yanıtı parse ettiği için, ardından başka bir parse işlemi uygulamak gereksizdir ve hata oluşturur.

Bu durumu önlemek için, yanıtı bir kez parse etmek yeterlidir. Eğer res.text() kullanıyorsanız ve ardından JSON.parse() uyguluyorsanız, bu ikinci parse işlemi gereksizdir ve hatalara yol açabilir. Doğru yaklaşım, yanıtı doğrudan JSON olarak almak veya sadece bir kez parse işlemi uygulamaktır.

Aslında bozuk olan JSON verileri: en yaygın hatalar

JSON verilerinin gerçekten bozuk olduğu durumlar nadirdir, ancak karşılaşılan en yaygın hatalar şunlardır:

  • Trailing comma (sonda virgül): Örneğin, {"anahtar": "değer",} şeklindeki bir JSON nesnesi geçersizdir.
  • Tek tırnak kullanımı: JSON, yalnızca çift tırnak (") kullanır. Tek tırnaklar (') geçersizdir.
  • Anahtarların tırnak içerisinde olmaması: Örneğin, {anahtar: "değer"} geçersizdir; { "anahtar": "değer" } doğru formattır.
  • JSON dışındaki değerler: Python’daki True, False, None gibi değerler JSON’da geçerli değildir. Bunların yerine true, false, null kullanılmalıdır.
  • Yorum satırları: JSON, yorum satırlarını desteklemez. Eğer JSON verisinde // yorum gibi satırlar varsa, bunlar geçersizdir.
  • Kesintiye uğramış kopyala-yapıştır: JSON verisinin tamamı kopyalanmamışsa, örneğin { "anahtar": "değer şeklinde kesintiye uğramış bir JSON nesnesi, parse hatasına yol açar.

Bu tür hataların çözümü için, JSON doğrulayıcıları kullanmak ve veriyi düzgün bir şekilde formatlamak gerekiyor.

JSON hatalarını hızlıca düzeltmek için pratik yöntemler

JSON hatalarını çözmek için birkaç basit adım izleyebilirsiniz:

  1. Doğrulama aracı kullanın: JSON verisini doğrulamak için çevrimiçi araçlardan faydalanabilirsiniz. Örneğin, JSON verisinin hangi satırında hata olduğunu bulmak için doğrulayıcılar kullanabilirsiniz.
  1. JSON5.parse() fonksiyonunu kullanın: JSON5, JSON’un daha esnek bir versiyonudur ve bazı yaygın hataları otomatik olarak düzeltir. Örneğin, trailing comma ve tek tırnak gibi hataları düzeltebilir.
  1. JSON onarım araçları kullanın: Eğer JSON verisinde hafif hatalar varsa ve bunları manuel olarak düzeltmek yerine otomatik olarak çözmek istiyorsanız, JSON onarım araçları kullanabilirsiniz. Bu araçlar, JSON verisini sıkı JSON formatına dönüştürürken, bazı hataları otomatik olarak düzeltir.

Örneğin, tarayıcıda hızlı bir şekilde JSON verisini onarmak için:

// JSON5 ile parse etme
const düzeltilmişVeri = JSON5.parse(bozukJSON);

// Veya çevrimiçi bir araç kullanarak

10 saniyelik hata ayıklama kılavuzu

JSON hatalarıyla karşılaştığınızda, aşağıdaki basit adımları izleyerek sorunun kaynağını hızlıca tespit edebilirsiniz:

  • ‘<’ token’ı görülüyorsa: Yanıtın HTML olduğunu anlayın ve API endpoint’inin doğruluğunu, kimlik doğrulama token’larını ve sunucu durumunu kontrol edin.
  • ‘o at position 1’ hatası görülüyorsa: Yanıtın iki kez parse edildiğini anlayın ve parse işlemini yalnızca bir kez uygulayın.
  • Diğer hatalarda: JSON verisinin bozuk olduğunu anlayın ve doğrulama ile onarım araçlarını kullanarak sorunu çözün.

Bu basit adımlar, JSON hatalarını hızlıca tanımlamanıza ve çözmenize yardımcı olacaktır. Unutmayın, JSON hatalarının çoğu, yanıtın beklenmedik şekilde HTML olması ya da verinin yanlış parse edilmesi gibi basit nedenlerden kaynaklanır. Bu nedenle, sorunu doğrudan JSON formatında aramak yerine, yanıtı üreten kaynağa odaklanmak her zaman daha verimli olacaktır.

Geliştirme sürecinde karşılaşılan JSON hataları, aslında sıkıntı değil, geliştiricilerin karşılaşması gereken doğal süreçlerdir. Bu hatalardan öğrenmek ve çözüm yollarını keşfetmek, daha sağlam uygulamalar geliştirmenin temel adımlarından biridir.

Yapay zeka özeti

JSON parse ederken 'Beklenmeyen token' hatasıyla mı karşılaşıyorsunuz? Genellikle sorun JSON değil, yanıtın HTML olması ya da verinin iki kez parse edilmesidir. Hataların nedenlerini ve çözümlerini öğrenin.

Yorumlar

00
YORUM BIRAK
ID #YX2SG2

0 / 1200 KARAKTER

İnsan doğrulaması

4 + 3 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.