Minifikasi vs. Prettifikasi JSON: Kapan Memakai Masing-masing
Anda bisa menulis dokumen JSON yang sama dengan dua cara: dijejalkan ke satu baris tanpa spasi, atau dibentangkan ke puluhan baris dengan indentasi konsisten. JSON.parse() memperlakukan keduanya sama. Perbedaannya hanya soal pembacanya: jaringan atau manusia.
Apa yang berubah di antara keduanya
Minifikasi membuang setiap byte yang tidak mengubah makna: spasi setelah titik dua dan koma, newline, dan indentasi. Prettifikasi (disebut juga beautification) menambahkan whitespace itu kembali dalam pola yang konsisten, biasanya 2 atau 4 spasi per level nesting, agar Anda bisa melihat strukturnya sekilas.
// Minified (48 bytes)
{"user":{"id":7,"active":true,"tags":["a","b"]}}
// Prettified (2-space indent, 96 bytes)
{
"user": {
"id": 7,
"active": true,
"tags": ["a", "b"]
}
}Keduanya terurai menjadi object in-memory yang sama. Tambahan 48 byte pada versi prettified hanya melayani keterbacaan manusia dan tidak membawa informasi semantik apa pun.
Kapan minifikasi adalah pilihan yang tepat
Respons dan permintaan API: setiap byte yang Anda buang tidak perlu diunduh klien. Pada payload besar, misalnya daftar terpaginasi berisi ratusan record, minifikasi bisa memangkas 15-25% ukuran transfer sebelum kompresi berjalan.
Konfigurasi yang disisipkan dalam bundle HTML atau JS: blob JSON minified yang di-inline ke tag <script> tidak menggemukkan bundle Anda dengan formatan yang tak dibutuhkan peramban mana pun.
Baris log dan penyimpanan: jika Anda menulis JSON ke berkas log atau kolom database satu record per baris, minifikasi menjaga setiap record dalam satu baris, dan alat seperti grep, jq -c, serta log shipper berbasis baris bergantung pada itu.
Satu catatan: jika Anda sudah melayani respons dengan kompresi gzip atau brotli (kebanyakan API begitu), penghematan byte dari minifikasi menyusut drastis, karena whitespace berulang terkompresi dengan baik. Minify untuk kasus tanpa kompresi (konfigurasi yang disisipkan, log), tempat dampaknya paling terasa.
Kapan prettifikasi adalah pilihan yang tepat
Apa pun yang akan dibaca manusia: contoh dokumentasi API, berkas konfigurasi yang diedit manual (package.json, tsconfig.json), keluaran debugging, dan diff code review. Blob JSON minified satu baris dalam git diff tampil sebagai satu baris berubah sekecil apa pun perubahannya, sedangkan JSON yang diprettifikasi memberi diff per baris yang bersih untuk direviu.
Konfigurasi yang berkontrol versi: indentasi dua spasi atau empat spasi dengan satu key per baris berarti git bisa menunjukkan persis key mana yang berubah, alih-alih menandai seluruh blob sebagai termodifikasi.
2 spasi vs. 4 spasi vs. tab
JSON.parse() mengabaikan indentasi, jadi pilihannya tidak berpengaruh secara fungsional. Dua spasi adalah konvensi paling umum di ekosistem JavaScript/TypeScript (npm, kebanyakan style guide JS) dan menjaga object bersarang dalam tetap muat di layar. Empat spasi lebih umum di tooling sekitar Python. Tab jarang dipakai untuk JSON karena editor dan penampil diff merendernya tidak konsisten. Pilih satu dan tetap konsisten dalam satu proyek, karena indentasi campuran menghasilkan diff yang berisik.
FAQ
- Apakah me-minify JSON mengubah datanya dengan cara apa pun?
- Tidak. Minifikasi hanya membuang whitespace yang tidak signifikan: spasi, tab, dan newline di luar nilai string. Setiap key, nilai, dan karakter struktural tetap sama. JSON.parse() pada versi minified menghasilkan object yang identik dengan versi prettified.
- Seberapa kecil JSON minified?
- Tergantung formatasi asli dan kedalaman nesting, tetapi 10-30% adalah tipikal untuk data bersarang sedang dengan indentasi dua spasi. Dokumen yang bersarang dalam atau kaya array menghemat lebih banyak karena indentasi berlipat seiring kedalaman. Jika respons dikompresi gzip saat transit, penghematan efektifnya menyusut signifikan karena whitespace berulang terkompresi sangat efisien.
- Haruskah saya me-minify JSON sebelum menyimpannya di database?
- Untuk kolom JSON/JSONB, kebanyakan database menyimpan representasi hasil parsing secara internal, jadi minify sebelum insert hampir tidak menghemat apa-apa di lapisan penyimpanan. Minify tetap menghemat bandwidth saat insert untuk payload besar, dan menjaga berkas bergaya log satu-record-per-baris mudah di-grep.
- Apakah ada risiko mem-prettify JSON sebelum mengirimnya ke klien?
- Hanya bandwidth. API produksi sebaiknya me-minify (atau tidak menambah whitespace saat menyerialisasi), karena yang membaca adalah mesin. Prettify hanya untuk endpoint debug yang dibaca manusia, contoh dokumentasi, atau tooling pengembangan lokal.
Coba alat ini
Artikel terkait
Apa itu JSON? Panduan Lengkap untuk Pemula →
JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca manusia dan mudah diurai mesin. Pelajari sintaks, tipe data, dan struktur yang menjadi fondasi API modern.
Sejarah JSON: Dari Tahun 2000 hingga Menjadi Standar Industri →
Telusuri JSON dari ide Douglas Crockford tahun 2001, diadopsi oleh Yahoo, hingga menjadi standar ECMA-404 yang menggerakkan 90% API modern.
Panduan Lengkap JSON Schema (Draft 7) →
JSON Schema adalah standar untuk mendeskripsikan dan memvalidasi struktur JSON. Pelajari keyword inti, bangun schema API nyata, dan terapkan praktik terbaik.