JSON'da hata ayıklarken yapılan 10 klasik hata (ve bunların hızlı bir şekilde nasıl düzeltileceği)
Yazar: Safe Local Tools Editör
Bozuk JSON nadiren gizemlidir; standarttır. Aynı hataların geri geldiğini fark ettiğinizde, günlük hayalet avını durdurun ve birkaç dakika içinde yapıyı, kodlamayı ve varsayımları düzeltmeye başlayın. API "Beklenmeyen belirteç" döndürdüğünde veya bir işlem hattı yapılandırmayı bıraktığında, suçlu nadiren "JSON'un kendisidir": genellikle düzenleyicide JSON'a benzeyen ancak açık kuralları (RFC 8259) ihlal eden ayrıştırıcı metni beslediniz. Ve Safe Local Tools'ta yerel olarak biçimlendirmek ve denetlemek gizli bilgilerin internetteki biçimlendirici sunuculara gönderilmesini önler.

Neden "Düğümde çalışıyor" ve katı ayrıştırıcıda başarısız oluyor
Geliştiriciler JavaScript değişmezlerini JSON ile karıştırırlar. JavaScript sondaki virgülleri, tek tırnak işaretlerini ve bazı kısayolları tolere eder; JSON, veri alışverişi için sıkı bir dilbilgisidir. Hata, hiçbir zaman serileştirilmeyen prototipte doğar ve diske veya HTTP'ye yazdığında patlar.
Bir de sohbet faktörü var: tipografik tırnak işaretlerini veya görünmez boşlukları değiştiren uygulamalara yapıştırılan parçacıklar. Yükü kanıt olarak değerlendirin; baytları koruyun, normalleştirilmiş formları karşılaştırın.
Hata 1 — son özellikten sonra virgül
Son virgül çoğu modern JS'de geçerlidir; katı JSON'da geçerli değildir. Güzel editörler sorunu gizler. Şablon oluşturucular, son alan değiştiğinde genellikle kalan virgülleri yayınlar; CI fikstürlerinde "JSON.parse"ı otomatikleştirin.
{
"userId": 42,
"role": "editor",
}2'den 5'e kadar hatalar - tırnak işaretleri, kontrol, JSON türleri ve yinelenen anahtarlar
Anahtarları/değerleri içeren tek tırnak işaretleri geçersizdir; JSON çift tırnak gerektirir. Dize sonu içindeki ham kontrol karakterleri — `\n' kullanın veya gerçekten serileştirin. 'tanımsız', 'NaN', 'Sonsuzluk' JSON belirteçleri değildir; 'null' ile eşleştirin, dizeleri kullanın veya parantezleri çıkarın.
Yinelenen anahtarlar, yükleyiciye bağlı olarak kabul edilebilir; ilk veya son değer kazanır; yığınlar arasında belirleyici olmayan davranış. Şema hatası olarak ele alın ve katı modda denetleyin.
const reparado = JSON.stringify({ status: "ok" });6'dan 10'a kadar hatalar - yorumlar, kodlama, büyük yükler, sapma ve sızıntı
Pure JSON hiçbir yorumu yoktur; JSONC yalnızca aracın vaat ettiği yerde. BOM ve karışık kodlamalar sıfır karakterde kesilir; Excel'den veya eski sürümlerden BOM olmadan UTF-8'i normalleştirin. Devasa ve hoş bir baskıya sahip JSON bant genişliğini ve Farkları artırır; kablo üzerinde küçültme, yalnızca insanlar için güzeldir.
Schema Drift ("userId" numarasının dizeye dönüşmesi), katı tüketicileri başka bir anlamda sessizce kırar. Son olarak, hata ayıklayarak jetonları ve PII'leri biletlere yapıştırın — yerel araçların önemli olmasının nedeni budur.
Safe Local Tools, JSON'u tarayıcıda işler: Gereksiz yüzey alanını genişletmeden, düzeltilmiş veriler üzerinde yineleme yapmak için idealdir.
Hata ayıklama akışı sona eriyor
Başarısız olan baytları tam olarak yakalayın. Bildirilen konumu bulun. Belgeyi ikili aramayla başarısız olan en küçük parçaya kadar azaltın. Varsa JSON Şemasına veya OpenAPI'ye göre doğrulayın. Düzelttikten sonra üretim seri hale getiricisini tekrar gözden geçirin; çoğu hata, düzenleyicideki görsel hatalar değil, çift dizelidir.
Altın armatürleri unicode, iç içe diziler ve sayısal uç noktalarla saklayın; bağımlılık yükseltmelerinde ayrıştırmayı çalıştırın.
Diller arasında birlikte çalışma
Büyük tamsayılar, geçerli JSON'da bile JavaScript'te hassasiyeti kaybedebilir. JSON nesneleri kavramsal olarak sırasızdır ancak insanlar ekleme sırasına güvenir. Tarihler, açık saat dilimine sahip ISO‑8601'e ihtiyaç duyar. Türleri zorlayan "Yardımlı" SDK'lar, nadir bir dal patlayana kadar kötü yükleri maskeler; daha ziyade uçta erken başarısız olur.
Slack, Teams veya e-posta yoluyla yapılan entegrasyonlar genellikle tipografik alıntıları dönüştürür, girintileri çıkarır veya satırları keser; yapıştırdığınız yük artık mikro hizmetin aldığı yük değildir. Hata ayıklama sırasında, HTTP gövdesinin veya dosyanın diske ham dökümünü isteyin; Herkese açık biçimlendiriciler, sırları paylaşılan günlüğe atma alışkanlığını teşvik eder.
Bu nedenle, Safe Local Tools akışı gibi bir tarayıcı doğrulayıcı, API belirteçleri ve geçici anahtarlarla çalışan takımlara uyar: düzeltilmiş bir kopyayı yerel olarak yapıştırırsınız, "JSON.parse" gülümseyene kadar yinelersiniz ve ancak bundan sonra gerçek değerleri Secret Manager aracılığıyla yeniden sunarsınız - tüm dosyayı DPA'da olmayan bir üçüncü taraf arka uçtan geçirmeden.
Fikstürler büyüdüğünde, CI ve istatistiksel boyut farkındaki "JSON.parse" işlemini otomatikleştirin: serileştirme regresyonları, üretimde ayrıştırma hatalarına dönüşmeden önce bayt artışları olarak görünür.
JSON'u neyin bozduğunu bildikten sonra iş düzenli mühendisliğe döner: tırnak ve virgül disiplinine sadık kalmak, denetimin dışına çıkan denetim karakterlerini temizlemek, tür kaymasını yakalamak ve fark araçları arasında çıplak çıktıyı çapraz doğrulamaktır. Excel veya konsol yapıştırmalarının BOM sıfır baytından önce sızdığını görmezden geldiğinizde en "temiz görünümlü" hata yüzleriyle saat kaybedersiniz; bu yüzden önce kod noktalı karakter yolunun bozulup bozulmadığını, ardından OpenAPI özünü doğrularsınız. İstemci kodunda JSON.stringify(JSON.parse(...)) döngüsüyle "çift sıkıştırma" yapan ara katmanların üreticide patladığını log hattında erken yakalamak bile birçok vakayı kapatır. Aynı ham gövdenin hem sıkı ayrıştırıcıda hem şema doğrulamasında fark çıkması, "sessizce kabul görülmüş yanlış türleri" yakalamanızı sağlar. Makinenizi biçimcil bir SaaS’a dönüştürmeden ince ayar için JSON formatlayıcıyı deneyin →