JSON formatter ve doğrulayıcı

Acrafto Team Geliştiriciler
Güncellendi
Giriş bekleniyor. JSON'u yukarıya yapıştırın veya bir .json dosyasını sürükleyip bırakın.

Herhangi bir JSON’u yukarıdaki alana yapıştırın; bu JSON formatter ve doğrulayıcı, siz yazarken onu kontrol eder. Geçerli giriş seçtiğiniz girintiyle okunaklı biçimde formatlanır veya tek satıra küçültülür (minify). Geçersiz girişte satır ve sütun numarasını, vurgulanmış bir kesiti ve yaygın hatalar için tek tıkla düzeltmeyi içeren net bir hata mesajı alırsınız. Her şey tarayıcınızda çalışır, bu yüzden API yanıtları, yapılandırma dosyaları ve dışa aktarımlar bilgisayarınızdan hiç çıkmaz.

Bu JSON formatter neler yapar

  • JSON formatlama 2 boşluk, 4 boşluk veya sekme girintisiyle yapılır. Anahtarları sırala seçeneğini işaretlemediğiniz sürece çıktı, anahtarların orijinal sırasını korur.
  • JSON küçültme (minify) tüm boşlukları ve satır sonlarını siler. Sonucun altındaki boyut göstergesi kaç bayt kazandığınızı gösterir.
  • JSON doğrulama, güncel JSON standardı olan RFC 8259 kurallarına göre canlı olarak yapılır. Belge doğru olduğu anda durum satırı yeşile döner.
  • Yaygın hatalar otomatik olarak düzeltilir: sondaki virgüller, tek tırnaklar, tırnaksız anahtarlar, yorum satırları, Python tarzı True, None ve NaN, .5 veya +1 gibi sayılar.
  • Dosyalar Dosya aç düğmesiyle veya bir .json dosyasını giriş alanına sürükleyip bırakarak yüklenir. Ardından sonucu indirebilir ya da ikinci bir tur için girişe geri gönderebilirsiniz.

Hata mesajı neden kırmızı renkten daha önemli

Çoğu online doğrulayıcı yalnızca bir şeylerin yanlış olduğunu söyler. Tarayıcılar da pek farklı değildir: Chrome’da JSON.parse şu hatayı verir: Unexpected token } in JSON at position 148. Firefox ise expected property name or '}' der ve ikisi de hangi satıra bakmanız gerektiğini söylemez. Bu araç, her token’ın nerede başladığını hatırlayan kendi ayrıştırıcısını kullanır. Ayrıştırıcı durduğunda satır ve sütun numarasını, hatalı karakterin altında bir şapka işareti (^) bulunan satır kesitini ve Muhtemelen iki özellik arasında virgül eksik gibi anlaşılır bir ipucu alırsınız. Hataya git düğmesi imleci doğrudan girişteki o konuma taşır.

Yapıştırılan belgelerde en sık gördüğümüz hatalar:

GirişSorunDoğru JSON
{'name': 'Ada'}tek tırnak{"name": "Ada"}
{name: "Ada"}tırnaksız anahtar{"name": "Ada"}
[1, 2, 3,]sondaki virgül[1, 2, 3]
{"a": 1 "b": 2}eksik virgül{"a": 1, "b": 2}
{"ok": True}Python sabiti{"ok": true}
{"x": 007}baştaki sıfır{"x": 7} veya {"x": "007"}
// commentyorum satırıJSON’da izin verilmez

Otomatik düzelt düğmesi, eksik virgül ve baştaki sıfır dışında bunların hepsini onarır. Düzeltme bilerek temkinli tutulmuştur. Eksik virgülün nereye ait olduğunu asla tahmin etmez, çünkü yanlış yere eklenen bir virgül verinin anlamını değiştirir. 007 ise 7 sayısı olarak da, bir kod olarak da kastedilmiş olabilir. Bu durumlarda bunun yerine hatanın tam konumunu görürsünüz.

Büyük sayılar, anahtar sırası ve genellikle bozulan diğer şeyler

Birçok formatter önce JSON.parse, ardından JSON.stringify çağırarak çalışır. Bu gidiş dönüş veriyi sessizce bozar. 1234567890123456789 gibi bir Twitter veya Snowflake kimliği, JavaScript sayılarının 2^53 sınırını aşar ve 1234567890123456800 olarak geri gelir. 1.0 değeri 1 olur, 1e3 ise 1000 olur. Bu formatter sayıları hiçbir zaman kayan noktalı sayıya dönüştürmez. Her sabiti tam olarak yazıldığı gibi kopyalar, böylece çıktı girişin yeniden yorumlanması değil, birebir yeniden biçimlendirilmesi olur. Aynısı dizelerin içindeki kaçış dizileri için de geçerlidir: "\u00e9" olduğu gibi "\u00e9" olarak kalır, "é" karakterine dönüştürülmez.

Anahtar sırası da korunur. JSON belirtimi nesne üyelerinin sırasız olduğunu söyler, ancak yapılandırma dosyaları, test verileri ve kod incelemeleri sıra sabit kaldığında çok daha kolay okunur. Kanonik bir biçim tercih ediyorsanız, örneğin iki API yanıtını bir diff aracında karşılaştırmak için, Anahtarları sırala seçeneğini etkinleştirin. Böylece iki belge de özelliklerini her iç içe geçme düzeyinde alfabetik sırayla listeler.

JSON formatlama mı, JSON küçültme mi: hangisi ne zaman

Okunaklı biçimde formatlanmış JSON insanlar içindir. Bir API yanıtını incelerken, bir package.json, tsconfig.json veya OpenAPI belgesi yazarken ya da diff’lerin satır başına tek bir değişiklik göstermesi gereken bir depoda test verisi saklarken bunu kullanın. JavaScript dünyasında gelenek 2 boşluktur, Python ve .NET projelerinde 4 boşluk yaygındır, sekmeler ise her okuyucunun kendi genişliğini seçmesine olanak tanır.

Küçültülmüş JSON makineler içindir. Boşluklar, formatlanmış bir belgenin genellikle yüzde 20 ila 40’ını oluşturur. Bu yüzden onları kaldırmak, tarayıcılara gönderilen verileri, Redis’te veya bir veritabanı sütununda saklanan değerleri ve HTML’e gömülü data-* niteliklerini küçültür. Gzip bu farkın bir kısmını kapatır, ancak küçültülmüş sürüm sıkıştırıldığında yine daha küçük bir sonuç verir. Sonucun altındaki boyut göstergesi, belgeniz için tam farkı gösterir.

Terminalde ve editörlerde JSON ile çalışmak

Düzenli olarak işlediğiniz dosyalar için bir komut satırı aracı her web sitesinden daha hızlıdır. jq . file.json okunaklı biçimde formatlar, jq -c . file.json küçültür, python -m json.tool file.json ise Python kurulu olan her yerde çalışır. Visual Studio Code, JSON’u Shift+Alt+F ile formatlar ve bir $schema özelliği eklediğinizde onu bir şemaya göre doğrular. Bu sayfa diğer durumlar içindir: geliştirici araçlarının ağ sekmesinden kopyalanan bir yanıt, bir günlük satırı, bir wiki’den alınmış yapılandırma parçası ya da hiçbir şey kuramadığınız bir bilgisayarda hızlı bir kontrol.

Bu sitedeki ilgili araçlar: Base64 kodlayıcı ve çözücü, Base64url ile kodlanmış bir JSON olan JWT’nin veri (payload) kısmını çözer. UNIX zaman damgası dönüştürücü, çoğu API yanıtında bulunan createdAt sayılarını okunabilir tarihlere çevirir. UUID çözücü ise verilerinizdeki tanımlayıcıların sürümünü ve zaman damgasını gösterir. Daha fazla araç geliştirici araçları kategorisinde yer alır.

Sıkça sorulan sorular

JSON'um bir sunucuya yükleniyor mu? Hayır. Ayrıştırma, formatlama ve onarım tamamen tarayıcınızda, JavaScript ile çalışır. Sayfa yüklendikten sonra internet bağlantınızı kesebilirsiniz, araç çalışmaya devam eder. Hiçbir şey kaydedilmez veya saklanmaz.
Editörüm yorum satırlarını kabul ederken doğrulayıcı neden reddediyor? Yorum satırları, formatın ayrıştırıcı yönergeleri için kullanılmasını önlemek amacıyla JSON'un yaratıcısı Douglas Crockford tarafından bilerek çıkarıldı. tsconfig.json veya .vscode/settings.json gibi dosyalar teknik olarak JSONC'dir, yani editörlerin desteklediği bir üst kümedir. API'lerdeki, veritabanlarındaki ve çoğu programlama dilindeki katı ayrıştırıcılar bu dosyaları reddeder. Düzeltme düğmesi yorum satırlarını kaldırır, böylece sonuç her yerde geçerli olur.
JSON Lines veya birden fazla nesneyi aynı anda formatlayabilir miyim? Bir JSON belgesi tam olarak tek bir değer içerir. Virgül veya satır sonlarıyla ayrılmış birkaç nesne yapıştırırsanız, doğrulayıcı ilk fazladan değerde durur. Onları köşeli parantez içine alarak bir dizi oluşturun, ardından formatlayın. Düzeltme düğmesi bunu otomatik olarak yapmaz, çünkü girişin tek bir belge olarak mı kastedildiğini bilemez.
Maksimum boyut nedir? Sabit bir sınır yoktur. Birkaç megabaytlık belgeler bir dizüstü bilgisayarda bir saniyeden çok daha kısa sürede formatlanır. Sayfanın akıcı kalması için yaklaşık 400 kB üzerindeki belgelerde sözdizimi vurgulama kapatılır, ancak kopyalama ve indirme çalışmaya devam eder.
Anahtarları sıralamak veriyi değiştirir mi? Hayır. JSON'daki nesneler tanım gereği sırasızdır (bkz. Vikipedi'deki JSON maddesi), dolayısıyla bir ayrıştırıcı sıralanmış belgeyi ve orijinal belgeyi aynı değer olarak okur. Diziler hiçbir zaman yeniden sıralanmaz, çünkü sıraları verinin bir parçasıdır.
JSON'u bir dizenin içine gömmek için kaçış karakterlerini nasıl eklerim? Önce küçültün, ardından her ters eğik çizginin ve çift tırnağın önüne kaçış karakteri ekleyin. Birçok dil bunu doğrudan yapar: JavaScript'te JSON.stringify(JSON.stringify(obj)) veya Python'da json.dumps(json.dumps(obj)), JSON metnini içeren bir JSON dizesi üretir.

Bu sayfaları arkadaşlarınızla paylaşırsanız, yer imlerine eklerseniz veya bağlantı verirseniz memnun olurum. Teşekkürler! 🙏