tooly

JSON formatlayıcı ve doğrulayıcı

JSON'u yapıştırıp tercih ettiğiniz girintiyle güzelce biçimlendirin veya üretim için küçültün. Sözdizimi hataları tam satır ve sütunla bildirilir. Tarayıcınızda tamamen çevrimdışı çalışır.

Her şey tarayıcınızda çalışır — hiçbir şey gönderilmez

Nasıl kullanılır

  1. 1

    JSON'unuzu kutuya yapıştırın.

  2. 2

    Biçimlendirmek için Biçimlendir'e, boşlukları kaldırmak için Küçült'e tıklayın.

  3. 3

    Sonucu kopyalayın veya .json dosyası olarak indirin.

Dağınık JSON nereden gelir

Pratikte karşılaştığınız JSON'ların çoğu bir program tarafından başka bir program için yazılmıştır, bu yüzden tek uzun bir satır olarak gelir: tarayıcının ağ sekmesinden kopyalanmış bir API yanıtı, bir günlük dosyasındaki webhook yükü, bir veritabanı sütununda saklanan bir yapılandırma değeri. İç içe tek bir alanı bulmak için 4.000 karakterlik tek bir satırı okumak yavaştır ve hataya açıktır. Okunur biçimde yazdırmak (pretty-print) her anahtarı kendi satırına koyar ve her seviyeyi girintiler; böylece yapı bir bakışta görünür hale gelir.

Tersi de aynı derecede yaygındır. JSON'u bir ortam değişkenine, bir sorgu dizesine, bir test fixture'ına veya bir sohbet mesajına yapıştırmadan önce çoğu zaman mümkün olduğunca kompakt olmasını istersiniz. Küçültme, metin değerlerinin dışında kalan her boşluğu ve satır sonunu kaldırır; tipik bir girintili yapılandırma dosyası, ne kadar derin iç içe olduğuna bağlı olarak yüzde 20 ila 40 küçülür.

Formatlayıcı verilerinize ne yapar

Girdi, tarayıcının yerel JSON ayrıştırıcısıyla ayrıştırılır ve seçtiğiniz girintiyle yeniden yazılır: 2 boşluk, 4 boşluk veya bir sekme. Küçült aynı yolu hiç girinti olmadan kullanır. Belge metin olarak düzenlenmek yerine ayrıştırılmış değerden yeniden oluşturulduğu için bazı ayrıntılar değişebilir ve hangilerinin değiştiğini bilmeye değer:

  • Sayı gösterimi normalleştirilir. 1.0 1, 1e3 1000, -0 ise 0 olur. Değer aynıdır, yazımı değil.
  • Çok büyük tam sayılar hassasiyet kaybeder. JavaScript sayıları 64 bitlik kayan noktalı sayılar olarak saklar ve bunlar yalnızca 9.007.199.254.740.991'e kadar kesindir. 12345678901234567890 gibi 19 haneli bir kimlik 12345678901234567000 olarak geri gelir. Verilerinizde Snowflake tarzı kimlikler, veritabanı bigint'leri veya bu ölçekte küçük birimlerle ifade edilmiş ödeme tutarları varsa, kullanmadan önce çıktıyı karşılaştırın.
  • Unicode kaçışları çözülür. "caf\u00e9", "café" olarak yeniden yazılır. İkisi de geçerli JSON'dur ve aynı metni ifade eder.
  • Yinelenen anahtarlar birleşir. Bir nesne aynı anahtarı iki kez içeriyorsa yalnızca son değer kalır. JSON standardı yinelenen anahtarları tanımsız bırakır ve çoğu ayrıştırıcı bu şekilde davranır.
  • Tam sayı görünümlü anahtarlar en başa taşınır. "2" veya "10" gibi negatif olmayan tam sayılara benzeyen anahtarlar, diğer tüm anahtarlardan önce artan sırayla en başa yerleştirilir. Bu, JSON'un değil JavaScript nesnelerinin bir kuralıdır. Sıradan metin anahtarları orijinal sıralarını korur.

Bunların hiçbiri tipik API yükleri için önemli değildir, ancak biçimlendirilmiş bir dosyayı commit etmek üzereyseniz ve minimal bir diff istiyorsanız önemlidir.

Hata konumunu okumak

Ayrıştırma başarısız olduğunda araç, geçerli bir belgeyi sürdüremeyen ilk karakteri bulmak için kendi küçük tarayıcısını çalıştırır ve bunu bir satır ve sütun olarak bildirir.

Bildirilen nokta, ayrıştırıcının pes ettiği yerdir; bu her zaman hatanın yapıldığı yer değildir:

  • [1, 2, ] içindeki sondaki virgül, orada bir değer beklendiği için kapanış köşeli parantezinde bildirilir.
  • İki özellik arasındaki eksik virgül, ikinci anahtarın başında bildirilir.
  • Eksik bir kapanış süslü veya köşeli parantezi girdinin en sonunda bildirilir; bu bazen asıl sorunun yüzlerce satır altıdır. Açılmış son nesneyi veya diziyi arayın.
  • Kapanış tırnağı eksik bir metin, JSON metninin içinde ham bir satır sonuna izin verilmediği için kendi satırının sonunda bildirilir. Bir değere yapıştırılmış çok satırlı metin için de aynı konum görünür; oradaki satır sonları \n olarak yazılmalıdır.

Girdi aslında JSON değil de bir JavaScript nesne değişmezi, YAML veya tek tırnakla yazdırılmış bir Python dict ise, hata ilk bir iki satırda görünür. Bu formatlar benzer görünür ama birbirinin yerine kullanılamaz.

Girinti seçmek

  • 2 boşluk, çoğu JavaScript aracında, package.json dosyalarında ve birçok stil kılavuzunda varsayılandır. Derin iç içe verilerin ekranın sağ kenarından taşmasını önler.
  • 4 boşluk, Python'un json.dumps(indent=4) çıktısıyla eşleşir ve sığ belgelerde daha kolay okunur.
  • Sekme, her okuyucunun düzenleyicisinde görsel genişliği seçmesine olanak tanır ve 4 boşluktan biraz daha küçük dosyalar üretir.

Bir depoda yaşayan dosyalar için projenin zaten kullandığı stile uyun; stilleri karıştırmak her diff'i gürültülü hale getirir.

Biçimlendirilmiş verilerle sonraki adımlar

Yapı okunur hale geldiğinde başka işler de kolaylaşır. Bir kayıt dizisini bir tabloya yaymak için onu JSON'u CSV'ye dönüştür ile dönüştürün. Bir yükün iki sürümü arasında tam olarak neyin değiştiğini görmek için ikisini de aynı girintiyle biçimlendirin ve Metinleri karşılaştır (diff) aracında karşılaştırın; aynı biçimlendirme, diff'in yalnızca gerçek değişiklikleri göstermesi demektir. Her şey sayfa içinde gerçekleşir, bu yüzden bir yükteki token'lar ve kişisel veriler cihazınızda kalır.

SSS

JSON'um yükleniyor mu?

Hayır. Ayrıştırma ve biçimlendirme tarayıcınızda çalışır; JSON içindeki API anahtarları veya özel veriler makinenizden çıkmaz.

Neden JSON'um geçersiz deniyor?

Yaygın nedenler: sondaki virgül, çift yerine tek tırnak, yorumlar veya tırnaksız anahtarlar. Hata mesajı satır ve sütunu gösterir.

Anahtar sırası korunur mu?

Evet, anahtarlar girdideki sıralarında kalır; tek istisna "2" veya "10" gibi tam sayı görünümlü anahtarlardır, JavaScript bunları artan sırayla en başa taşır.

Ne kadar büyük dosya biçimlendirebilirim?

Birkaç megabayt sorunsuz çalışır. Çok büyük dosyalar belgenin tamamı bellekte ayrıştırıldığı için biraz sürebilir.

İlgili araçlar