
# JSONC

I file di archiviazione storh sono oggetti JSON e le letture accettano JSONC: commenti su riga singola, commenti su più righe e virgole finali. In questo modo è sicuro aprire e annotare i file dei record in un editor; storh continua comunque a elaborarli.

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

Le letture provano prima l'`json_decode` rigoroso e ricorrono al rimozione dei commenti JSONC solo se fallisce, così i file canonici non sostengono mai il costo della gestione dei commenti.

## Cosa scrive storh

Le scritture sono documenti JSON canonici, compatti, su una sola riga e con newline finale:

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

Commenti e formattazione personalizzata vengono mantenuti finché storh non riscrive il record.
Una `put()` allo stesso ID sostituisce l'intero file con un output canonico, quindi
considerate i commenti come appunti temporanei, non come metadati persistenti. Le informazioni persistenti
vanno inserite in `data`.

La codifica conserva Unicode e le barre senza escape e mantiene le frazioni decimali degli zero
(`1.0` resta `1.0`), quindi decodificare e ricodificare gli stessi dati produce
byte identici. I manifest degli indici e gli altri file di metadati interni sono oggetti JSON
con la stessa tolleranza in lettura.

`Jsonc::decode_object()` rifiuta documenti che non sono oggetti e input malformati.
`Jsonc::encode_object()` e `Jsonc::encode_compact_object()` scrivono gli array come
documenti oggetto.
