JSON vs JSON5 vs JSONC
Intinya: Superset ketat secara berurutan: JSONC menambahkan komentar; JSON5 menambahkan kutip tunggal, key tanpa kutip, koma di ujung dan angka heksadesimal. Memilih yang salah merusak API, bukan editor Anda.

Intinya: gunakan JSON standar setiap kali data melintasi batas sistem, dan gunakan JSONC hanya untuk konfigurasi lokal yang diedit manusia; gunakan JSON5 ketika Anda membutuhkan kutip tunggal, koma di ujung atau key tanpa kutip, tetapi pastikan dulu loader mendukungnya.
Dalam satu kalimat: JSONC adalah JSON plus komentar; JSON5 adalah JSON plus kebiasaan JavaScript.
Matriks fitur
| Fitur | JSON | JSONC | JSON5 |
|---|---|---|---|
| String bertanda kutip ganda | ✅ | ✅ | ✅ |
| String bertanda kutip tunggal | ❌ | ❌ | ✅ |
| Key tanpa kutip | ❌ | ❌ | ✅ |
Komentar baris // |
❌ | ✅ | ✅ |
Komentar blok /* */ |
❌ | ✅ | ✅ |
| Koma di ujung | ❌ | ❌ | ✅ |
Angka heksadesimal 0xFF |
❌ | ❌ | ✅ |
Infinity / NaN |
❌ | ❌ | ✅ |
| String multi-baris | ❌ | ❌ | ✅ |
| Dapat dibaca parser standar | ✅ | ❌ | ❌ |
Perhatikan bahwa JSONC hanya menyelesaikan komentar. Banyak orang mengira "JSON yang mengizinkan komentar" juga mengizinkan koma di ujung; tsconfig.json tetap gagal pada satu koma saja.
Untuk apa masing-masing
JSON — pertukaran. API, queue, kolom JSON basis data, log. Apa pun yang mesin-ke-mesin.
JSONC — konfigurasi editor. VS Code mengurai berkas ini sendiri, sehingga JSON.parse tidak pernah melihatnya. Tidak ada RFC; ini konvensi de facto yang dipimpin Microsoft.
JSON5 — superset longgar untuk manusia. Tujuannya adalah "konfigurasi yang tampak seperti objek literal JavaScript". Paling cocok untuk berkas .json5 yang dimuat oleh build tool; sintaksnya paling luas dan dukungan perkakasnya paling sempit.
Memilih
| Situasi | Pilihan |
|---|---|
| Body permintaan atau respons | JSON, tanpa alternatif |
| Kolom JSON di MySQL / PostgreSQL | JSON, fungsi mereka tidak menerima yang lain |
| Konfigurasi proyek yang butuh penjelasan | JSONC bila didukung, jika tidak YAML |
| Anda menginginkan kelonggaran ala JS | JSON5, setelah memastikan loader mendukungnya |
| Akan diedit oleh non-engineer | YAML, indentasi mengalahkan kurung kurawal |
Satu jebakan mudah
Mem-parsing berkas JSONC sebagai JSON ketat menghasilkan error yang menunjuk komentarnya:
SyntaxError: Unexpected token / in JSON at position 42
Sebelum menghapus komentar, periksa apakah berkasnya memang dimaksudkan sebagai JSONC. Setelah Anda menghapusnya, Anda mungkin masih menemui koma di ujung dua baris kemudian.
FAQ
Bagaimana sebaiknya memilih antara JSONC dan JSON5?
Gunakan JSONC ketika komentar adalah satu-satunya yang Anda butuhkan: ia menambahkan // dan /* */ di atas JSON, dan settings.json serta tsconfig.json VS Code memakainya. Gunakan JSON5 ketika Anda juga menginginkan kutip tunggal, key tanpa kutip, koma di ujung, angka heksadesimal atau string multi-baris. Keduanya bergantung pada loader, jadi pastikan alat yang membaca berkas tersebut mendukungnya.
Mengapa berkas JSONC tidak dapat dibaca sebagai JSON standar?
JSONC adalah konvensi de facto, bukan RFC tersendiri, sehingga parser standar menolak komentar. JSON.parse pada berkas seperti itu melempar Unexpected token /, yang menunjuk komentarnya alih-alih datanya. Hanya konfigurasi yang dibaca editor atau parser khusus yang sebaiknya ditulis sebagai JSONC.
Haruskah saya mengirim berkas JSON5 ke sebuah API?
Tidak. API, kolom JSON basis data dan queue melakukan parsing JSON ketat, sehingga kutip tunggal, key tanpa kutip dan koma di ujung milik JSON5 akan ditolak. JSON5 adalah untuk konfigurasi lokal yang diedit manusia; konversikan ke JSON standar sebelum melintasi batas sistem.