9 poin oleh GN⁺ 2024-12-09 | 2 komentar | Bagikan ke WhatsApp
  • JSON5 adalah format yang memperluas format berkas JSON agar lebih mudah ditulis dan dipelihara langsung oleh manusia
    • Tidak digunakan untuk komunikasi antarmesin
    • Dimulai pada 2012 dan per 2022 diunduh lebih dari 65 juta kali per minggu, serta termasuk dalam 0,1% paket yang paling banyak dijadikan dependensi di npm
    • Diadopsi oleh proyek-proyek utama seperti Chromium, Next.js, Babel, Retool, dan WebStorm
    • Didukung secara bawaan di platform Apple seperti macOS dan iOS
  • Fitur JSON5
    • Merupakan superset dari JSON, dan mencakup sebagian sintaks ECMAScript 5.1.
    • Berkas JSON5 selalu merupakan berkas ES5 yang valid.
  • Fitur ECMAScript 5.1 yang diperluas
    • Objek
      • Kunci objek dapat berupa IdentifierName ECMAScript 5.1.
      • Mengizinkan satu koma penutup di objek.
    • Array
      • Mengizinkan satu koma penutup di array.
    • String
      • String dapat dibungkus dengan tanda kutip tunggal.
      • Dapat ditulis melintasi beberapa baris dengan meng-escape karakter baris baru.
      • Dapat menyertakan escape karakter.
    • Angka
      • Dapat dinyatakan dalam heksadesimal.
      • Dapat memiliki titik desimal di depan atau di belakang.
      • Dapat mencakup IEEE 754 positive infinity, negative infinity, dan NaN.
      • Dapat diawali dengan tanda plus eksplisit.
    • Komentar
      • Mengizinkan komentar satu baris dan banyak baris.
    • Spasi putih
      • Mengizinkan karakter spasi putih tambahan.
  • API
    • JSON5.parse(): Mem-parsing string JSON5 untuk menghasilkan nilai atau objek JavaScript.
    • JSON5.stringify(): Mengubah nilai JavaScript menjadi string JSON5.
  • CLI
    • Menyediakan CLI untuk mengonversi JSON5 ke JSON atau memvalidasi sintaks dokumen JSON5.
  • Kompatibilitas ECMAScript
    • JSON5 dirancang agar sepenuhnya kompatibel dengan ES5, tetapi karakter U+2028 dan U+2029 tidak diizinkan di ES5.
    • Karakter ini diizinkan di ES2019 sehingga JSON dan JSON5 menjadi sepenuhnya kompatibel dengan ES2019.
  • Lisensi
    • Disediakan di bawah lisensi MIT.

2 komentar

 
GN⁺ 2024-12-09
Komentar Hacker News
  • JSON hanya mendukung string dengan tanda kutip ganda, sehingga menghilangkan perdebatan soal penggunaan tanda kutip. Komentar dan koma penutup dapat ditambahkan dengan JSONC
    • JSONC digunakan sebagai format konfigurasi di Visual Studio Code
  • Nama JSON5 dianggap tidak etis. Jika tidak ada persetujuan dari pembuat aslinya, tidak pantas memberi kesan seolah ini adalah versi berikutnya
  • Lebih menyukai JSON5 dan merasa YAML kurang mudah dibaca. Sering menggunakan alat konversi ke JSON untuk memahami file YAML
  • JSON digunakan luas karena sederhana. Alternatif yang lebih rumit seperti XML atau YML dianggap tidak cocok
    • Menggunakan format yang rumit dapat menimbulkan masalah
  • Disayangkan EDN tidak banyak diadopsi di luar ekosistem Clojure
    • Meski tidak ada standar, para pengguna tetap memakainya tanpa masalah
  • Menunjukkan masalah karakter khusus di JSON. JSON didefinisikan sebagai UTF-8, tetapi ada kesalahan dalam pencatatan karakter kontrol ASCII 7-bit
    • RFC seharusnya mencakup 33 karakter kontrol
  • Merekomendasikan TOML dan menganggapnya sebagai kombinasi sempurna antara keterbacaan bagi manusia dan dukungan alat
  • Dalam alternatif JSON/YAML, mendukung lebih banyak tipe tidak dianggap sebagai ide yang baik
    • NestedText hampir ideal, tetapi menggunakan beberapa sintaks dan tidak memasukkan komentar ke dalam model data
  • Menunjukkan bahwa JSON5 tidak memperkenalkan urutan escape \U untuk karakter Unicode di luar BMP
    • Keharusan memakai pasangan surrogate UTF-16 merepotkan dan tidak sesuai dengan standar Unicode
  • Menganggap JSON tidak memerlukan fitur lain selain komentar dan tipe datetime native
    • Koma penutup dianggap berguna