JSON Toolkit

JSON vs JSON5 vs JSONC

Inti pati: Superset ketat mengikut urutan: JSONC menambah komen; JSON5 menambah petikan tunggal, kunci tanpa petikan, koma mengekor dan nombor hex. Memilih yang salah merosakkan API, bukan editor anda.

Pemula~4 min bacaanDiterbitkan 2026-10-30Dikemas kini 2026-10-30
Perbandingan ciri JSON, JSON5 dan JSONC

Pokoknya: gunakan JSON standard apabila data merentasi sempadan sistem, dan gunakan JSONC hanya untuk konfigurasi setempat yang disunting manusia; gunakan JSON5 apabila anda memerlukan petikan tunggal, koma mengekor atau kunci tanpa petikan, tetapi sahkan pemuat menyokongnya dahulu.

Dalam satu baris: JSONC ialah JSON serta komen; JSON5 ialah JSON serta tabiat JavaScript.

Matriks ciri

Ciri JSON JSONC JSON5
Rentetan petikan berganda ✅ ✅ ✅
Rentetan petikan tunggal ❌ ❌ ✅
Kunci tanpa petikan ❌ ❌ ✅
Komen baris // ❌ ✅ ✅
Komen blok /* */ ❌ ✅ ✅
Koma mengekor ❌ ❌ ✅
Nombor hex 0xFF ❌ ❌ ✅
Infinity / NaN ❌ ❌ ✅
Rentetan berbilang baris ❌ ❌ ✅
Boleh dibaca oleh penghurai standard ✅ ❌ ❌

Perhatikan bahawa JSONC hanya menyelesaikan komen. Ramai orang menganggap "JSON yang membenarkan komen" juga membenarkan koma mengekor; tsconfig.json masih gagal pada satu.

Untuk apa setiap satu

JSON — pertukaran. API, baris gilir, lajur JSON pangkalan data, log. Apa-apa mesin-ke-mesin.

JSONC — konfigurasi editor. VS Code menghuraikan fail ini sendiri, jadi JSON.parse tidak pernah melihatnya. Tiada RFC; ia ialah konvensyen de facto yang dipimpin Microsoft.

JSON5 — superset longgar untuk manusia. Matlamatnya ialah "konfigurasi yang kelihatan seperti literal objek JavaScript". Paling sesuai untuk fail .json5 yang dimuatkan oleh alat binaan; sintaks paling luas dan sokongan perkakas paling sempit.

Memilih

Situasi Pilih
Badan permintaan atau respons JSON, tiada alternatif
Lajur JSON dalam MySQL / PostgreSQL JSON, fungsi mereka tidak menerima yang lain
Konfigurasi projek yang memerlukan penjelasan JSONC jika disokong, jika tidak YAML
Anda mahukan kelonggaran gaya JS JSON5, selepas mengesahkan pemuat menyokongnya
Bukan jurutera akan menyuntingnya YAML, inden mengalahkan pendakap

Satu perangkap mudah

Menghuraikan fail JSONC sebagai JSON ketat menghasilkan ralat yang menunjuk kepada komen:

SyntaxError: Unexpected token / in JSON at position 42

Sebelum memadam komen, semak sama ada fail itu dimaksudkan sebagai JSONC. Padamkannya dan anda mungkin masih menemui koma mengekor dua baris kemudian.

Soalan Lazim

Bagaimana saya patut memilih antara JSONC dan JSON5?

Gunakan JSONC apabila komen ialah satu-satunya perkara yang anda perlukan: ia menambah // dan /* */ di atas JSON, dan settings.json serta tsconfig.json VS Code menggunakannya. Gunakan JSON5 apabila anda juga mahu petikan tunggal, kunci tanpa petikan, koma mengekor, nombor hex atau rentetan berbilang baris. Kedua-duanya bergantung pada pemuat, jadi sahkan alat yang membaca fail itu menyokongnya.

Mengapa fail JSONC tidak boleh dibaca sebagai JSON standard?

JSONC ialah konvensyen de facto, bukan RFC berasingan, jadi penghurai standard menolak komen. JSON.parse pada fail sedemikian melontar Unexpected token /, menunjuk kepada komen dan bukannya data. Hanya konfigurasi yang dibaca oleh editor atau penghurai khusus patut ditulis sebagai JSONC.

Patutkah saya menghantar fail JSON5 kepada API?

Tidak. API, lajur JSON pangkalan data dan baris gilir menghuraikan JSON ketat, jadi petikan tunggal, kunci tanpa petikan dan koma mengekor JSON5 ditolak. JSON5 adalah untuk konfigurasi setempat yang disunting manusia; tukarkannya kepada JSON standard sebelum ia merentasi sempadan sistem.

Bacaan lanjut