JSON Toolkit

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.

Pemula±4 menit bacaDiterbitkan 2026-10-30Diperbarui 2026-10-30
Perbandingan fitur JSON, JSON5 dan JSONC

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.

Bacaan lanjutan