Teknik yardım
Yaygın JSON Hataları: Sondaki Virgül, Tırnak ve Unexpected Token
Geçersiz JSON’u düzeltin: sondaki virgül, tek tırnak, tırnaksız anahtarlar ve Unexpected token. JSON.parse neden başarısız olur ve JSON nasıl doğrulanır.
JSON hatalarının çoğu katı sözdiziminden gelir: sondaki virgül, tek tırnak, tırnaksız özellik adları, eksik virgül, uyumsuz parantez, geçersiz kaçış veya yorumlar.
JSON JavaScript nesnesine benzer görünür ama daha katıdır. Özellik adları ve dizeler çift tırnak ister.
Unexpected token görürseniz, bildirilen karakter ayrıştırmanın durduğu yer olabilir—asıl hatanın başladığı yer olmayabilir.
JSON’unuz geçersiz işaretlendi. Genelde küçük bir sözdizimi sorunudur, bozuk dosya biçimi değil. Aşağıdaki yedi hata Unexpected token’ların çoğunu yaratır.
JSON Neden Bu Kadar Kolay Bozulur?
JSON katı sözdizimli bir veri biçimidir. JavaScript nesne değişmezi benzer görünüp yine de geçersiz JSON olabilir. Standart JSON’da özellik adları ve dizeler çift tırnak ister, sondaki virgül yasaktır ve yorumlar biçimin parçası değildir.
1. Sondaki Virgüller
Son özellikten sonraki fazla virgül sorundur. Standart JSON buna izin vermez.
Geçersiz
{
"name": "Alex",
"age": 30,
}
Geçerli
{
"name": "Alex",
"age": 30
}
Aynı kural diziler için de geçerlidir. Son öğeden sonraki virgülü silin.
Geçersiz
[
"red",
"green",
]
Geçerli
[
"red",
"green"
]
2. Çift Tırnak Yerine Tek Tırnak
JavaScript sık sık tek tırnak kabul eder. JSON etmez. Özellik adları ve dize değerleri çift tırnak kullanmalıdır.
Geçersiz
{
'name': 'Alex'
}
Geçerli
{
"name": "Alex"
}
3. Tırnaksız Özellik Adları
JavaScript’te bazen name tırnaksız yazılabilir. JSON’da her özellik adı çift tırnaklı bir dize olmalıdır.
Geçersiz
{
name: "Alex",
age: 30
}
Geçerli
{
"name": "Alex",
"age": 30
}
4. Değerler Arasında Eksik Virgül
Özellikler ve dizi öğeleri arasında virgül gerekir. Ayrıştırıcı Unexpected token’ı eksik virgülde değil, sonraki tırnak veya parantezde bildirebilir.
Geçersiz
{
"name": "Alex"
"age": 30
}
Geçerli
{
"name": "Alex",
"age": 30
}
5. Eksik veya Fazla Köşeli ve Küme Parantezi
Nesneler { } kullanır. Diziler [ ]. İç içe JSON, ] eksik, } fazla veya ikisi yer değiştirmişken sık sık başarısız olur. Açılış ve kapanış çiftlerini sayın.
Geçersiz
{
"items": [1, 2
}
Geçerli
{
"items": [1, 2]
}
6. Geçersiz Kaçış Dizileri
JSON dizesinde ters eğik çizgi bir kaçış başlatır. ", \ ve \n gibi diziler geçerlidir. C:\Users yazılmış bir Windows yolu geçerli değildir: \U yasal bir JSON kaçışı değildir. Ters eğik çizgileri ikiye katlayın; yoksa ayrıştırıcı o karakterde durur.
Geçersiz
{"file":"C:\Users\Alex"}
Geçerli
{"file":"C:\\Users\\Alex"}
7. JSON İçindeki Yorumlar
Standart JSON’da yorum yoktur. Bazı yapılandırma araçları // veya /* */ kabul eder (JSONC, JSON5 ve benzeri). Bu standart JSON değildir ve JSON.parse reddeder.
Geçersiz
{
// user name
"name": "Alex"
}
Unexpected Token Ne Anlama Gelir?
Ayrıştırıcı o konumda izin verilmeyen bir karakterle karşılaştı. Bildirilen nokta okumanın durduğu yerdir. Daha önce virgül atladıysanız hata sonraki özelliğin tırnağını gösterebilir. İfade çalışma zamanına göre değişir; her tarayıcının aynı cümleyi basmasını beklemeyin.
Unexpected End of JSON Input Ne Anlama Gelir?
Metin değer tamamlanmadan bitti. Tipik nedenler eksik } veya ], kesilmiş girdi, boş gövde veya kesilmiş API yanıtıdır. Tek bir hata değildir.
JSON.parse() Neden Başarısız Olur?
JSON.parse() yalnızca geçerli JSON metnini kabul eder. Bu başarılıdır:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Bu başarısız olur, çünkü tek tırnak JSON değildir:
const text = "{'name':'Alex'}";
JSON.parse(text);
Tam hata iletisi JavaScript çalışma zamanına bağlıdır. İletiyi ipucu sayın, sonra o konumun yakınındaki virgül, tırnak ve parantezlere bakın.
JavaScript nesne değişmezi { name: 'Alex' } gibi görünebilir. Geçerli JSON { "name": "Alex" } gibi görünmelidir: çift tırnaklı adlar ve dizeler, sondaki virgül yok, yorum yok.
- JSON metni
- Ayrıştırıcı jetonları okur
- Geçerli veri veya Unexpected token
JSON Hatasını Hızlı Bulma
Bu sırayla çalışın. Tüm dosyayı yeniden yazarak başlamayın.
- JSON’u bir doğrulayıcıdan geçirin.
- İlk bildirilen hatayı okuyun.
- Bildirilen konumdan biraz önce bakın.
- Virgülleri kontrol edin, özellikle sondaki ve eksik olanları.
- Tırnakları kontrol edin: yalnızca çift tırnak.
- { } ve [ ] eşleştirin.
- Dizelerdeki ters eğik çizgi kaçışlarını kontrol edin.
- Katı JSON gerekiyorsa yorumları kaldırın.
Olağan düzeltmelerin hızlı haritası:
| Sorun | Düzeltme |
|---|---|
| Sondaki virgül | Son öğeden sonraki virgülü silin. |
| Tek tırnak | Adlar ve dizeler için çift tırnak kullanın. |
| Tırnaksız anahtar | Özellik adını çift tırnağa sarın. |
| Eksik virgül | Özellikler veya dizi öğeleri arasına virgül koyun. |
| Eksik parantez | Her { } ve [ ] çiftini kapatın. |
| Geçersiz kaçış | Yasal bir kaçış kullanın veya yollardaki ters eğik çizgileri ikiye katlayın. |
| Yorum | Standart JSON için // ve /* */ kaldırın. |
Tarayıcıda JSON Doğrulayın ve Biçimlendirin
NEXNARA JSON biçimlendir ve karşılaştır bu aygıtta JSON denetleyebilir.
Doğrulama, 2 boşluk, 4 boşluk veya sekme ile güzelleştirme, minify, iki belgeyi karşılaştırma (JSON Diff) ve .json dosyası açma yapabilirsiniz. Ayrıştırma tarayıcıda JSON.parse kullanır, eval değil.
5 MB’den büyük belgeler yavaş hissedilebilir. 15 MB’den büyük metin tarayıcıda işlenmez, böylece sayfa yanıt vermeye devam eder.
JSON işleme işleminin kendisi tarayıcınızda olur. Bu araç için metin bir NEXNARA sunucusuna gönderilmez. Reklamlar ve diğer site özellikleri hâlâ ağı kullanır; bu işlemeden ayrıdır.
Geçersiz JSON denetlemeniz mi gerekiyor? JSON biçimlendir ve karşılaştır öğesini açın ve metni yapıştırın.
FAQ
JSON’um neden Unexpected token diyor?
Ayrıştırıcı o noktada izin verilmeyen bir karaktere rastladı. Asıl hata—çoğu zaman eksik virgül veya tek tırnak—o konumun hemen öncesinde olabilir.
JSON’da sondaki virgüle izin var mı?
Hayır. Standart JSON son özellik veya dizi öğesinden sonra virgüle izin vermez. JavaScript nesne değişmezleri çoğu zaman izin verir.
JSON tek tırnak kullanabilir mi?
Hayır. Özellik adları ve dizeler çift tırnak kullanmalıdır.
JSON yorum içerebilir mi?
Standart JSON’da hayır. Bazı araçlar yorumlu JSONC veya JSON5 kabul eder; JSON.parse yine de reddeder.
JSON.parse() neden başarısız olur?
Dize geçerli JSON değildir. Tipik nedenler sondaki virgül, tek tırnak, tırnaksız anahtarlar, yorumlar veya kesilmiş bir değerdir. Tam ileti çalışma zamanına bağlıdır.
JSON’un geçerli olup olmadığını nasıl denetlerim?
JSON biçimlendir ve karşılaştır gibi bir doğrulayıcıya yapıştırın veya bir konsolda JSON.parse çağırın. Ayrıştırma fırlatırsa metin geçerli JSON değildir.