📋
← Rehberlere dön

Yaygın JSON Sözdizimi Hataları ve Doğrulayıcı Kullanarak Bunları Düzeltme

· Etiketler: json, json-errors, json-validation, json-syntax, debugging, developer-tips

Yaygın JSON Hataları

JSON'un katı sözdizimi kuralları, tek bir yanlış yerleştirilmiş karakterin bile tüm bir belgeyi bozabileceği anlamına gelir. En yaygın JSON hatalarını anlamak, daha hızlı hata ayıklamanıza ve aynı hataları tekrarlamaktan kaçınmanıza yardımcı olacaktır. Aşağıda, geliştiricilerin karşılaştığı en sık sorunlar ve her biri için net açıklamalar ve düzeltmeler bulunmaktadır.

1. Sondaki Virgüller

Hata: Nesne veya dizi sonunda Unexpected token

Sondaki virgüller JavaScript nesnelerinde ve dizilerinde kullanılabilir ancak JSON'da kesinlikle yasaktır.

Geçersiz JSON:

{
  "name": "Alice",
  "age": 30,
}

Düzeltme: Son öğeden sonra virgülü kaldırın.

{
  "name": "Alice",
  "age": 30
}

Sondaki virgüllü diziler:

// Geçersiz
[1, 2, 3,]

// Geçerli
[1, 2, 3]

2. Anahtarların Etrafında Eksik veya Yanlış Tırnak

Hata: Unexpected identifier veya Expected double-quoted property name

JSON, tüm nesne anahtarlarının çift tırnak içine alınmasını gerektirir. JavaScript'te çalışsa da, tek tırnak ve tırnaksız anahtarlar geçerli değildir.

Geçersiz JSON:

{
  name: "Alice",
  'occupation': "Engineer"
}

Düzeltme: Anahtarları her zaman çift tırnak içine alın.

{
  "name": "Alice",
  "occupation": "Engineer"
}

3. Dize Değerleri için Tek Tırnak Kullanımı

Hata: Unexpected identifier veya Unterminated string

Tıpkı anahtarlar gibi, dize değerleri de JSON'da çift tırnak kullanmalıdır. Tek tırnak geçerli değildir.

Geçersiz JSON:

{ "greeting": 'Hello, world!' }

Düzeltme: Tek tırnakları çift tırnakla değiştirin.

{ "greeting": "Hello, world!" }

İpucu: Dizeniz çift tırnak içeriyorsa, ters eğik çizgi ile kaçış karakteri kullanın: "He said, \"Hello\"".

4. Kaçış Karakteri Kullanılmayan Özel Karakterler

Hata: Unexpected token veya Invalid character

JSON dizelerinde belirli karakterler kaçış karakteri ile kullanılmalıdır: çift tırnak ("), ters eğik çizgi (\) ve kontrol karakterleri.

Geçersiz JSON:

{
  "path": "C:\Users\Documents\file.json",
  "quote": "He said "hello""
}

Düzeltme: Ters eğik çizgileri ve çift tırnakları düzgün şekilde kaçış karakteri ile kullanın.

{
  "path": "C:\\Users\\Documents\\file.json",
  "quote": "He said \"hello\""
}

JSON Kaçış Dizilerinin Tam Listesi

| Dizi | Temsil Ettiği | |----------|-----------| | \" | Çift tırnak | | \\ | Ters eğik çizgi | | \/ | Düz eğik çizgi | | \b | Geri silme | | \f | Form besleme | | \n | Yeni satır | | \r | Satır başı | | \t | Sekme | | \uXXXX | Unicode karakter (örn. é için \u00E9) |

5. Geçersiz Sayısal Formatlar

Hata: Unexpected number veya Invalid number

JSON, sayıların nasıl formatlanabileceğine dair belirli kurallara sahiptir:

  • Başta sıfır kullanılamaz (01 geçersizdir)
  • Yalnızca 0 sayısı için tek bir baştaki sıfıra izin verilir
  • Sayılar sondaki noktaya sahip olamaz (10. geçersizdir)
  • Onaltılık, sekizlik ve ikili formatlar desteklenmez

Geçersiz JSON:

{
  "invalid1": 01,
  "invalid2": 10.,
  "invalid3": 0xFF,
  "invalid4": 1,000
}

Düzeltme:

{
  "valid1": 1,
  "valid2": 10.0,
  "valid3": 255,
  "valid4": 1000
}

6. Geçersiz Değerler: undefined, NaN, Infinity

Hata: undefined, NaN, Infinity için Unexpected token

JavaScript'te, JSON karşılığı olmayan değerler vardır. Bunlar ayrıştırma hatalarına neden olur:

Geçersiz JSON:

{
  "undefinedVal": undefined,
  "notANumber": NaN,
  "infinity": Infinity
}

Düzeltme: Geçerli JSON değerleriyle değiştirin veya bir kural kullanın.

{
  "undefinedVal": null,
  "notANumber": null,
  "infinity": 1.7976931348623157e+308
}

7. Fazla Virgül veya Eksik Virgül

Hata: Expected comma veya Unexpected token

JSON'da virgüller her anahtar/değer çiftini ve dizi öğesini ayırmalıdır, ancak son öğeden sonra bulunmamalıdır.

Eksik virgül (geçersiz):

{
  "name": "Alice"
  "age": 30
}

Düzeltme: Eksik virgülü ekleyin.

{
  "name": "Alice",
  "age": 30
}

8. Derin İç İçe Yapı Sorunları

Hata: Maximum call stack size exceeded veya ayrıştırıcı zaman aşımı

Bir sözdizimi hatası olmamakla birlikte, derin iç içe JSON (10+ seviye) performans sorunlarına neden olabilir ve hata ayıklamayı son derece zorlaştırabilir.

Sorunlu yapı:

{
  "level1": {
    "level2": {
      "level3": {
        "level4": {
          "level5": {
            "level6": {
              "value": "too deep"
            }
          }
        }
      }
    }
  }
}

Daha iyi yaklaşım: Yapıyı düzleştirin veya referanslar kullanın.

{
  "users": {
    "alice": { "role": "admin" }
  },
  "permissions": {
    "admin": ["read", "write", "delete"]
  }
}

9. Eksik Açılış veya Kapanış Parantezleri

Hata: Expected ',' or '}' veya Unexpected end of JSON input

Eşleşmeyen süslü ve köşeli parantezler, özellikle büyük veya elle yazılmış JSON dosyalarında yaygın bir JSON hatası kaynağıdır.

Geçersiz JSON:

{
  "name": "Alice",
  "items": [1, 2, 3
}

Düzeltme: Her { için eşleşen bir } ve her [ için eşleşen bir ] olduğundan emin olun.

{
  "name": "Alice",
  "items": [1, 2, 3]
}

Profesyonel ipucu: Açılış ve kapanış parantezlerini görsel olarak eşleştirmek için JSON'unuzu düzgün şekilde girintileyin. Bir JSON formatlayıcı bunu otomatik olarak yapabilir.

JSON Hatalarını Etkili Şekilde Hata Ayıklama

  1. Bir JSON doğrulayıcı kullanın — İlk hatanın tam satırını ve sütununu almak için JSON'unuzu ücretsiz bir JSON doğrulayıcıya yapıştırın.
  2. Artımlı olarak doğrulayın — Büyük dosyalar için, hatayı izole etmek üzere her seferinde bir bölümü doğrulayın.
  3. Kopyala-yapıştır kalıntılarına dikkat edin — Kelime işlemcilerden veya web sayfalarından genellikle görünmez karakterler, akıllı tırnaklar ve bölünmez boşluklar sızar.
  4. Karakter kodlamasını kontrol edin — Dosyanızın UTF-8 olarak kaydedildiğinden emin olun. Diğer kodlamalar görünmez hatalara neden olabilir.
  5. Bir linter kullanınjson eklentili ESLint gibi araçlar, geliştirme sırasında JSON hatalarını yakalar.

Unutmayın: JSON ayrıştırıcıları genellikle yalnızca ilk sözdizimi hatasını bildirir. Onu düzeltin, yeniden doğrulayın ve belge geçene kadar tekrarlayın. JSON Formatlayıcı ve Doğrulayıcı aracımız, bu süreci hızlandırmak için anında, ayrıntılı hata mesajları sunar.