
# JSONC

File penyimpanan storh berupa objek JSON, dan pembacaan menerima JSONC: komentar baris, komentar blok, serta koma di akhir. Dengan begitu, file catatan aman dibuka dan diberi anotasi di editor; storh tetap dapat menguraikannya.

```jsonc
{
  // Application-owned fields live under data.
  "id": "018bcfe5-6800-7000-8000-000000000000",
  "data": {
    "title": "Home",
  },
}
```

Pembacaan terlebih dahulu mencoba `json_decode` yang ketat dan hanya beralih ke penghapus JSONC jika gagal, sehingga file kanonis tidak perlu menanggung biaya penanganan komentar.

## Yang ditulis storh

Penulisan menghasilkan JSON kanonis yang ringkas, satu baris, dengan baris baru di akhir:

```text
{"id":"018bcfe5-6800-7000-8000-000000000000","data":{"title":"Home"}}
```

Komentar dan pemformatan khusus dipertahankan sampai storh menulis ulang catatan tersebut. `put()` ke ID yang sama mengganti seluruh file dengan keluaran kanonis, jadi perlakukan komentar sebagai catatan sementara, bukan metadata persisten. Informasi persisten sebaiknya disimpan di `data`.

Pengodean mempertahankan unicode dan garis miring tanpa escape, serta menjaga pecahan nol pada float (`1.0` tetap `1.0`), sehingga decode dan encode ulang data yang sama menghasilkan byte yang identik. Manifest indeks dan file metadata internal lainnya berupa objek JSON dengan toleransi pembacaan yang sama.

`Jsonc::decode_object()` menolak dokumen non-objek dan input yang formatnya salah.
`Jsonc::encode_object()` dan `Jsonc::encode_compact_object()` menulis array sebagai dokumen objek.
