
# JSONC

Datoteke za shranjevanje storh so objekti JSON, pri branju pa sprejemajo JSONC: enovrstične komentarje, večvrstične komentarje in zaključne vejice. Tako lahko datoteke zapisov varno odprete in označite v urejevalniku; storh jih še vedno razčleni.

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

Branje najprej poskusi s strogim razčlenjevalnikom `json_decode`, na čistilnik JSONC pa se preusmeri samo, če to ne uspe, zato kanonične datoteke nikoli ne porabijo dodatnih virov za obravnavo komentarjev.

## Kaj zapisuje storh

Zapisi so kanonični, strnjeni objekti JSON v eni vrstici z zaključnim znakom za novo vrstico:

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

Komentarji in oblikovanje po meri se ohranijo do naslednjih prepisov tega zapisa z storh.
`put()` v isti ID v celoti nadomesti datoteko s kanoničnim izhodom, zato komentarje obravnavajte kot začasne opombe, ne kot trajne metapodatke. Trajne informacije sodijo v `data`.

Kodiranje ohrani Unicode in poševnice brez ubežnih zapisov ter ohrani ničelne decimalne dele števil s plavajočo vejico (`1.0` ostane `1.0`), zato sta dekodiranje in ponovno kodiranje istih podatkov stabilna na ravni bajtov. Indeksi in druge datoteke z internimi metapodatki so objekti JSON z enako toleranco pri branju.

`Jsonc::decode_object()` zavrne dokumente, ki niso objekti, in neveljaven vhod.
`Jsonc::encode_object()` in `Jsonc::encode_compact_object()` zapišeta polja kot
objektne dokumente.
