Tüm makaleler

JSON Repair: JSON neden bozulur ve nasıl düzeltilir

"Bozuk" JSON yaygın bir sorundur: dosya neredeyse doğru görünür, ama bir ayrıştırıcı onu okumayı reddeder. Türkçe metinlerde bu, genellikle harf dönüşümü sırasında ortaya çıkan sessiz bir hatadan kaynaklanır.

Geçersiz JSON'un yaygın nedenleri

  • Kapanış parantezinden önce fazladan bir virgül{"a": 1,} — JavaScript buna tolerans gösterir ama sıkı bir JSON ayrıştırıcısı göstermez.
  • Çift yerine tek tırnak — bir JavaScript nesne değişmezinden kopyalarken yapılan yaygın bir hata.
  • Tırnaksız anahtarlar{"name": "Ayşe"} yerine {name: "Ayşe"}.
  • Yorumlar — JSON spesifikasyonu, JSON5 veya JSONC'nin aksine, hiç yorum öngörmez.
  • Kesilmiş çıktı — bir API yanıtı veya log dosyası ortasından kesilirse, belge kapatılmamış kalır.

Noktasız "ı" sorunu: anahtarları küçük harfe çevirirken bozulan JSON

Bazı JSON onarım veya normalize araçları, anahtarları tutarlı hale getirmek için otomatik olarak küçük harfe çevirir. Türkçede "I" harfinin küçük hali "ı" (noktasız), "İ" harfinin küçük hali ise "i" (noktalı) olur — İngilizce'deki gibi "I" → "i" değil. Bir araç Türkçe yerelinde çalışmıyorsa ve "İstanbul" gibi bir değeri İngilizce kurallarıyla küçük harfe çevirirse, sonuç "istanbul" değil, hatalı bir karakterle "i̇stanbul" olabilir — anahtar görünüşte doğru gözükse de karşılaştırmalarda ve şema doğrulamasında beklenmedik şekilde eşleşme başarısız olur.

Otomatik onarım nasıl çalışır

Bir JSON onarım aracı sezgisel yöntemler uygular: eksik tırnakları ekler, fazladan virgülleri kaldırır, bağlama göre kapatılmamış parantezleri kapatır. Bu, tipik ve yaygın hatalar için iyi çalışır, ama sihir değildir — veriler daha ciddi şekilde bozulmuşsa araç hangi değerin kastedildiğini tahmin edemez.

Mümkün olanın sınırları

Otomatik onarım sözdizimini düzeltir, anlamı değil. Tüm bir alan eksikse veya bir değer mantıksal olarak yanlışsa, araç bunu yakalamaz — sonucun yine de elle kontrol edilmesi gerekir, özellikle Türkçe karakter içeren anahtarlar bir yerelleştirme adımından geçtiyse.

Onarımın belirsiz olduğu durumlar

Bazı bozulmaların birden fazla eşit derecede makul düzeltmesi vardır. Kesilmiş bir dize olan {"a": 1, "b": 2 yalnızca parantezle kapatılabilir — ve veri kaybedilebilir. Onarım sezgisel yöntemi "en az yıkıcı" varsayımı yapar, ancak bu bir tahmindir, garanti değildir.

Aracı dene