JSON adalah format pertukaran data yang dominan dalam perangkat lunak modern — JSON mendukung hampir semua REST API, dikirimkan sebagai default untuk database dokumen NoSQL, berfungsi sebagai format konfigurasi untuk sebagian besar alat pembangunan, dan mendukung format pesan untuk setiap sistem streaming peristiwa besar. Terlepas dari keberadaannya yang ada di mana-mana, JSON membuat pengembang tersandung dengan cara-cara spesifik yang dapat diprediksi: aturan sintaksis ketat yang berbeda dari literal objek JavaScript, implementasi kasus tepi di sekitar angka besar dan Unicode, dan pertanyaan tentang kapan harus mengecilkan versus mencetak cantik. Bagian di bawah ini membahas apa yang sebenarnya dianggap sebagai JSON yang valid, keputusan minify-vs-pretty-print, lima kesalahan sintaksis yang paling umum, dan tips praktis untuk bekerja dengan JSON dalam alur kerja dunia nyata.

Apa yang Dianggap sebagai JSON yang Valid?

JSON (RFC 8259) lebih ketat dari perkiraan sebagian besar pengembang, dan keketatan ini bahkan sering diterapkan pada teknisi berpengalaman. Semua string harus menggunakan tanda kutip ganda — tanda kutip tunggal dan kunci yang tidak diberi tanda kutip keduanya merupakan kesalahan sintaksis, meskipun keduanya valid dalam literal objek JavaScript. Tanda koma setelah elemen terakhir suatu objek atau larik dilarang, tidak seperti dalam JavaScript dan Python modern yang secara aktif dianjurkan untuk kontrol sumber yang ramah terhadap perbedaan. Komentar dalam bentuk apa pun tidak diperbolehkan dalam JSON yang valid — baik komentar baris `//` maupun komentar blok `/* */` tidak muncul di mana pun dalam spesifikasi. Nilai root harus berupa objek, array, string, angka, boolean, atau null; nilai tingkat atas di luar tipe ini (fungsi, tanggal, tidak ditentukan) gagal validasi. Angka mengikuti tata bahasa tertentu yang mengecualikan `NaN`, `Infinity`, dan `-Infinity` sebagai nilai literal, dan mengecualikan angka nol di depan pada bagian bilangan bulat (kecuali 0 itu sendiri). Aturan ini berbeda dari literal objek JavaScript, itulah sebabnya "JSON" yang ditulis tangan sering kali gagal validasi saat ditempelkan ke alat ini atau ke parser bahasa pemrograman. Kesimpulan praktisnya adalah selalu memvalidasi JSON yang dihasilkan sebelum memasukkannya ke kontrol versi, mengirimkannya sebagai respons API, atau menyimpannya dalam database — kesalahan penguraian di tiga lingkungan hilir jauh lebih mahal untuk di-debug daripada kesalahan yang langsung terdeteksi di formatter.

Kapan Memperkecil vs Pretty Print

Pilihan minify-versus-pretty-print memiliki jawaban sederhana yang didorong oleh audiens: minify untuk konsumsi mesin, pencetakan cantik untuk konsumsi manusia. Konsumsi mesin mencakup respons API, penyimpanan database, antrean pesan, agregasi log, transmisi jaringan, dan konteks apa pun yang menganggap byte penting dan keterbacaan tidak penting. Respons REST API pada umumnya menyusut 25–40% setelah minifikasi, yang secara langsung mengurangi biaya bandwidth, menurunkan latensi pemuatan halaman, dan membebaskan penyimpanan database. Dikombinasikan dengan kompresi gzip atau brotli pada lapisan HTTP, total penghematan dapat mencapai 80–90% untuk muatan besar. Cetakan cantik mencakup file konfigurasi yang diperiksa ke dalam kontrol versi, contoh dokumentasi, cuplikan README, keluaran debug, dan di mana pun manusia benar-benar membaca kontennya. Pilihan gaya indentasi (2 spasi, 4 spasi, atau tab) bergantung pada konvensi proyek di sekitarnya — gunakan indentasi 2 spasi untuk sebagian besar proyek JavaScript, TypeScript, dan ekosistem web (standar de facto), gunakan 4 spasi untuk alur kerja yang berdekatan dengan Python (cocok dengan konvensi PEP 8 untuk Python itu sendiri), dan gunakan tab untuk proyek yang menerapkan gaya hanya tab (jarang tetapi masih ada di beberapa basis kode Go dan Java yang lebih lama). Alat ini defaultnya adalah indentasi 2 spasi dan mengingat preferensi Anda di seluruh sesi. Kunci Pengurutan adalah opsi yang berkaitan erat yang menjadikan file JSON bersifat deterministik — dua objek yang setara secara logis menghasilkan keluaran yang identik dengan byte, yang penting untuk perbedaan yang andal dalam kontrol versi dan untuk cache.

Kesalahan JSON Umum

Lima kesalahan spesifik merupakan penyebab sebagian besar kegagalan parse JSON, dan mengenalinya secara sekilas akan menghemat waktu proses debug secara signifikan. Pertama, tanda koma di akhir: `{"a": 1, "b": 2,}` adalah JSON yang tidak valid meskipun merupakan JavaScript yang valid dan disukai. Hapus koma setelah nilai terakhir atau klik tombol Perbaikan. Kedua, tanda kutip tunggal: `{'key': 'value'}` adalah serialisasi dict Python atau literal objek JavaScript, bukan JSON. Semua string JSON memerlukan tanda kutip ganda, dan tombol Perbaikan menggantikan tanda kutip tunggal dengan tanda kutip ganda sambil mempertahankan karakter yang lolos. Ketiga, komentar tersemat: JSON tidak memiliki sintaks komentar meskipun JSONC ("JSON dengan Komentar") digunakan secara luas dalam file konfigurasi editor dan konfigurasi alat build. JSONC adalah ekstensi VS Code, bukan dialek yang sesuai spesifikasi. Hapus komentar sebelum diurai, yang mana Perbaikan akan dilakukan secara otomatis. Keempat, kunci yang tidak diberi tanda kutip: `{name: "Alice"}` adalah JavaScript yang valid tetapi bukan JSON yang valid — kunci harus berupa string yang diberi tanda kutip ganda. Yang ini biasanya tergelincir ketika menyalin dari kode sumber JavaScript, dan Perbaikan dapat mengutip kunci gaya pengidentifikasi umum. Kelima, NaN, Infinity, dan -Infinity: spesifikasi JSON hanya mengizinkan angka terbatas, dan nilai floating-point khusus ini harus direpresentasikan sebagai string ("NaN") atau nilai null bergantung pada kebutuhan aplikasi hilir. Banyak pengurai bahasa secara diam-diam menerima ekstensi ini sebagai ekstensi, namun pengurai yang memenuhi spesifikasi menolaknya.

Tip Praktis untuk Bekerja dengan JSON

Beberapa tips alur kerja praktis mencakup sebagian besar tugas JSON di dunia nyata. Gunakan Tree Explorer untuk muatan besar — ​​ia merender level pertama dengan lambat, yang membuat rendering awal lebih ringan, meskipun file yang sangat besar masih menggunakan memori browser. Telusuri berdasarkan nama kunci untuk melompat langsung ke data yang Anda perlukan daripada menelusuri ribuan baris teks berformat. Urutkan kunci sebelum membandingkan dua objek JSON: dua objek yang setara secara logis dengan kunci dalam urutan berbeda terlihat berbeda dalam perbedaan teks tetapi menjadi identik byte setelah pengurutan. Sort Keys menghasilkan keluaran deterministik untuk perbedaan kontrol versi dan pembuatan kunci cache yang andal. Ekspor array objek datar ke CSV untuk pekerjaan spreadsheet — jika JSON Anda adalah daftar rekaman yang setiap rekamannya memiliki kunci yang sama, konverter CSV akan mengubahnya menjadi tabel yang bisa Anda buka langsung di Excel atau Google Spreadsheet. Objek bertumpuk dalam baris diserialisasikan sebagai string JSON di selnya, mempertahankan struktur tanpa melanggar asumsi tabel datar CSV. Coba Perbaiki sebelum menolak JSON yang tidak valid — ini memperbaiki masalah umum (tanda koma, komentar, tanda kutip tunggal, dan kunci tanpa tanda kutip) dan menghemat waktu dalam proses debug manual baris demi baris.