JSON küçültme nedir?
JSON (JavaScript Object Notation), RFC 8259 ve ECMA-404 tarafından tanımlanan, metin tabanlı hafif bir veri değişim biçimidir. Küçültme, bir dizgi literalinin dışında kalan her boşluğu, sekmeyi ve satır sonunu çıkarır — değerler bayt bayt korunur, yalnızca kozmetik boşluk silinir. Çıktı, girişle tam olarak aynı değere ayrıştırılır.
JSON küçültme nasıl çalışır?
Girişiniz, dahili JSON.parse ve JSON.stringify işlevleri kullanılarak tamamen tarayıcınızda işlenir. Üst düzey adımlar şöyledir:
- Girişiniz metin alanından kelimesi kelimesine okunur — yapıştırdığınız her bayt yerelde bellekte tutulur.
- Tarayıcı bunu
JSON.parseile ayrıştırır. Giriş geçerli JSON değilse, ayrıştırıcı birSyntaxErrorfırlatır; bu yakalanır ve aynen yüzeye çıkarılır — metniniz sayfadan asla ayrılmaz. - Ayrıştırma başarılı olduğunda, ayrıştırılmış değer girinti argümanı olmadan
JSON.stringify(value)ile yeniden basılır; bu, aynı değerin en kısa geçerli biçimini üretir. - Hem özgün hem de küçültülmüş metnin bayt uzunluğu
new TextEncoder().encode(...).byteLengthile hesaplanır — bir HTTP sunucusunun kabloda göreceği aynı UTF-8 bayt sayısıdır. - Çıktı salt okunur metin alanına yazılır, metrik şeridi bayt farkını ve tasarruf yüzdesini bildirir; İndir düğmesi sonucu sevk edebileceğiniz bir
.min.jsondosyası olarak paketler.
Bu araçla JSON'u neden küçültmelisiniz?
- Gizlilik: her ayrıştırma, küçültme ve metrik hesabı tarayıcınızda gerçekleşir. JSON sunucularımıza asla ulaşmaz — yükleme, telemetri ya da hesap yok.
- Gerçek bayt sayıları: özgün boyut, küçültülmüş boyut ve tasarruflar TextEncoder ile hesaplanır, böylece bir CDN ya da API gateway'in size faturalandıracağı gerçek UTF-8 bayt farkını görürsünüz.
- Sıfır veri kaybı: küçültme tamamen kozmetiktir — her değer aynı JSON ağacına ayrıştırılır; bu yüzden üretim payload'ları, manifestler ve gömülü fikstürler için güvenlidir.
- Hızlı: saf
JSON.parse+JSON.stringify, tipik pano boyutundaki payload'ları harici kütüphane yüklemeden anında işler.
JSON küçültmenin yaygın uygulamaları nelerdir?
JSON'dan önemsiz boşlukları çıkarmak, web geliştirme, veri mühendisliği ve gömülü sistemlerde her yerde karşımıza çıkar:
- API yük azaltma: istek ve yanıt gövdelerini, sayaçlı bir API gateway, ücretli bir egress bağlantısı veya bir uydu hattını geçmeden önce küçültün.
- HTML'ye gömme: bir
data-*özniteliğine veya bir<script type="application/json">etiketine bir JSON blob'unu, pretty-printer boşluklarını render edilmiş sayfaya sızdırmadan tıkıştırın. - Daha küçük localStorage: çıktıyı sıralı yerine küçültülmüş JSON olarak yazarak localStorage / IndexedDB kotanızı düşürün; bu, origin başına sıkı saklama sınırları olan mobil tarayıcılarda özellikle değerlidir.
JSON küçültme örneği nasıl görünür?
1,2 KB'lık güzel yazdırılmış bir yapılandırma dosyasını (iki boşluk girintiyle yaklaşık 1.225 bayt) yapıştırıp Küçült'e basmak onu genellikle 0,4 KB'ın altına — %66 tasarruf — düşürür; her anahtar ve değer aynen korunur. İndirilebilir output.min.json dosyası, biçimlendirme katmanı olmayan bir HTTP sunucusunun Content-Type: application/json ile vereceğiyle bayt bayt aynıdır.
Bu tarayıcımda mı çalışıyor?
Evet. Küçültme hattı, tarayıcı sekmesinin içinde çalışan saf JSON.parse + JSON.stringify'dır. Hiçbir şey yüklenmez, hiçbir service worker girdinizi proxy'lemez ve sayfa küçültme adımının kendisi için sıfır ağ isteği yapar. Tek giden trafik, standart sayfa-yükleme varlıklarıdır (CSS, fontlar, analitik) — JSON'unuz Ultim8Soft'a asla ulaşmaz.
JSON neden küçültülür?
Küçültülmüş JSON, güzel yazdırılmış kaynakla tam olarak aynı değere ayrıştırılır; ancak kabloda ve depoda daha küçüktür. Daha küçük payload'lar; daha düşük CDN egress faturaları, daha hızlı mobil indirmeler, service worker'ların içinde daha az bellek baskısı ve JWT payload'ları, gömülü HTML data-* öznitelikleri ve localStorage kotaları gibi sabit boyutlu zarflara daha sıkı yerleşim demektir. Yüksek hacimli API'larda bayt tasarrufu birikir — günde 1 GB'lık bir endpoint'te %30'luk azalma, ayda yaklaşık 9 GB tasarruf sağlar.
Küçültme veri kaybına yol açar mı?
Hayır. JSON küçültme yalnızca dizgi literallerinin dışında kalan boşlukları kaldırır — bunlar, şartnamenin zaten önemsiz olarak sınıflandırdığı boşluklar, sekmeler ve satır sonlarıdır. Her anahtar, değer, sayı, kaçış dizisi ve dizgi karakteri bayt bayt korunur. Çıktı, girişe deepEqual olan bir değere ayrıştırılır. Yok olan tek şey kozmetik girintidir.
Biçimlendirici ile küçültücü arasındaki fark nedir?
Eşlik eden JSON Biçimlendirici tersine gider: insanların iç içe yapıları okuyabilmesi için boşlukları genişletir. Küçültücü, taşıma ve depolama için bu boşlukları geri çıkarır. İki araç birbirinin tersidir — bir JSON belgesini Biçimlendirici → Küçültücü üzerinden döndürmek, küçültücüye başladığınız bayt dizgisinin aynısını verir; çünkü her ikisi de kozmetik biçimlendirme üzerinde değil, ayrıştırılmış değer üzerinde çalışır.
Bu JSON küçültücüsü, Node.js, Deno veya tarayıcı çalışma zamanınızın kullandığı aynı ayrıştırıcıyı kullanır ve süslü olmayan bir HTTP sunucusunun üreteceğiyle bayt bayt aynı çıktıyı üretir. Yukarıya herhangi bir JSON yapıştırın, çıktıyı kopyalayın veya .min.json olarak indirin.