
# JSONC

Fișierele de stocare storh sunt obiecte JSON, iar citirile acceptă JSONC: comentarii pe linie, comentarii bloc și virgule finale. Astfel, fișierele de înregistrări pot fi deschise și adnotate în siguranță într-un editor; storh le analizează în continuare.

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

Citirile încearcă mai întâi `json_decode` strict și recurg la JSONC pentru eliminare doar dacă acesta eșuează, astfel încât fișierele canonice nu suportă costul gestionării comentariilor.

## Ce scrie storh

Scrierile sunt canonice, compacte, pe o singură linie, în format JSON și se termină cu un rând nou:

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

Comentariile și formatarea personalizată se păstrează până când storh rescrie înregistrarea respectivă.
Un `put()` pentru același id înlocuiește întregul fișier cu rezultatul canonic, așa că tratați comentariile ca note temporare, nu ca metadate persistente. Informațiile persistente aparțin în `data`.

Codificarea păstrează caracterele unicode și barele oblice fără escape și menține fracțiile zero ale numerelor float (`1.0` rămâne `1.0`), astfel încât decodificarea și recodificarea acelorași date păstrează octeții neschimbați. Manifestele de index și alte fișiere interne de metadate sunt obiecte JSON, cu aceeași toleranță la citire.

`Jsonc::decode_object()` respinge documentele care nu sunt obiecte și intrările malformate.
`Jsonc::encode_object()` și `Jsonc::encode_compact_object()` scriu array-uri ca documente obiect.
