JSON dengan Komentar

JSONC (JSON with Comments) memperluas JSON standar untuk mengizinkan komentar bergaya JavaScript. Banyak alat pengembangan menggunakan JSONC untuk file konfigurasi di mana komentar membantu mendokumentasikan pengaturan. Parser ini menghapus komentar untuk menghasilkan JSON yang valid sambil mempertahankan struktur data.

Spesifikasi

Kasus Penggunaan Umum

  • Mengurai tsconfig.json dan jsconfig.json untuk proyek TypeScript/JavaScript
  • Membaca settings.json dan konfigurasi ekstensi VS Code
  • Memproses file konfigurasi Cloudflare wrangler.jsonc
  • Mengedit konfigurasi ESLint, Prettier, dan alat lain dengan dokumentasi inline

Fitur

  • Mengurai komentar satu baris (// komentar)
  • Mengurai komentar multi-baris (/* komentar */)
  • Menangani koma di akhir (umum dalam file JSONC)
  • Menghapus komentar untuk menghasilkan output JSON yang valid
  • Semua fitur Parser JSON standar (tampilan pohon, konversi)

Contoh

Konfigurasi TypeScript

Coba →

File tsconfig.json dengan komentar yang menjelaskan opsi compiler.

{
  // Compiler options for the project
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    /* Enable all strict type checking options */
    "strict": true
  }
}

Tips

  • VS Code, TypeScript, dan banyak alat modern mendukung JSONC secara native.
  • Saat berbagi konfigurasi, pertimbangkan apakah alat penerima mendukung komentar.
  • Konversi ke JSON standar dengan menghapus komentar ketika alat membutuhkan JSON ketat.

Pemahaman JSON dengan Komentar

JSONC (JSON with Comments) adalah ekstensi dari JSON standar yang mengizinkan komentar bergaya JavaScript satu baris (//) dan multi-baris (/* */), serta koma di akhir setelah elemen terakhir dalam array dan objek. Meskipun bukan standar resmi, JSONC telah menjadi format de facto untuk file konfigurasi yang menghadap developer di mana dokumentasi inline meningkatkan pemeliharaan.

Microsoft mempopulerkan JSONC melalui Visual Studio Code, yang menggunakannya untuk settings.json, keybindings.json, launch.json, dan extensions.json. tsconfig.json TypeScript dan jsconfig.json JavaScript adalah file JSONC, begitu juga banyak file konfigurasi ESLint, Prettier, dan Babel saat menggunakan ekstensi .json. wrangler.jsonc Cloudflare secara eksplisit menggunakan ekstensi .jsonc untuk menandakan dukungan komentar.

Keuntungan utama JSONC dibandingkan JSON biasa adalah dokumentasi. File konfigurasi sering berisi pengaturan yang tujuannya tidak jelas dari nama kunci saja. Komentar memungkinkan developer menjelaskan mengapa pengaturan ada, nilai apa yang valid, dan apa konsekuensi dari perubahan. Koma di akhir mengurangi noise version control dengan mengizinkan elemen terakhir memiliki format yang sama dengan yang lain, sehingga menambahkan item baru hanya menunjukkan satu baris yang berubah dalam diff daripada dua.

Di balik layar, parser JSONC bekerja dengan menghapus komentar dan koma di akhir sebelum meneruskan hasilnya ke parser JSON standar. Ini berarti model datanya identik dengan JSON — komentar adalah metadata untuk manusia, bukan data untuk program. Saat mengonversi JSONC ke JSON untuk alat yang membutuhkan kepatuhan JSON ketat, komentar hanya dihapus. Library node-jsonc-parser Microsoft, yang digunakan di VS Code, adalah implementasi referensi untuk penguraian JSONC.

JSONC bukan standar resmi yang didefinisikan oleh RFC atau spesifikasi ECMA manapun. Ini adalah konvensi yang dipopulerkan oleh Microsoft melalui VS Code dan TypeScript, dengan perilaku yang terdefinisi dengan baik oleh library jsonc-parser yang berfungsi sebagai implementasi referensi. Alat lain yang mendukung JSONC — ESLint, Prettier, dan berbagai editor — mengikuti konvensi yang sama untuk komentar satu baris, komentar multi-baris, dan koma di akhir. File JSONC umum termasuk tsconfig.json dan jsconfig.json (TypeScript/JavaScript), file pengaturan VS Code (settings.json, launch.json, tasks.json, keybindings.json), wrangler.jsonc (Cloudflare Workers), devcontainer.json (VS Code Dev Containers), dan berbagai konfigurasi alat lainnya. File JSON yang diedit terutama oleh developer yang bisa mendapat manfaat dari komentar kemungkinan mendukung JSONC.

JSONC hanya boleh digunakan untuk file konfigurasi yang dibaca oleh alat dengan dukungan JSONC eksplisit. Respons API, penyimpanan data, dan komunikasi antar layanan harus selalu menggunakan JSON standar, karena sebagian besar parser JSON akan menolak komentar sebagai error sintaks. Untuk memproses file konfigurasi JSONC secara programatik dengan parser JSON standar, hapus komentar terlebih dahulu menggunakan library yang sadar JSONC.

JSONC lebih konservatif daripada JSON5, yang merupakan superset JSON yang lebih ekstensif. Sementara JSONC hanya menambahkan komentar dan koma di akhir, JSON5 juga mengizinkan string dengan kutip tunggal, kunci objek tanpa kutip, angka heksadesimal, titik desimal di awal dan akhir, Infinity dan NaN, dan string multi-baris. JSONC memiliki dukungan alat yang lebih luas di ekosistem developer, sedangkan JSON5 digunakan dalam file konfigurasi spesifik seperti babel.config.json5 tetapi memiliki adopsi yang lebih sempit secara keseluruhan.

← Kembali ke semua alat