
# JSONC

storh salvestusfailid on JSON objektid ning lugemisel aktsepteeritakse JSONC: reakommentaare, plokkkommentaare ja lõpus asuvaid komasid. Nii saab kirjefaile redaktoris ohutult avada ja kommenteerida; storh parsib need endiselt korrektselt.

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

Lugemisel proovitakse kõigepealt ranget `json_decode` parsimist ja minnakse JSONC kommentaaride eemaldajale üle ainult siis, kui see ebaõnnestub, nii et kanoonilised failid ei maksa kommentaaride käsitlemise eest lisakulu.

## Mida storh kirjutab

Kirjutamisel väljastatakse kanooniline, kompaktne, üherealine JSON, mille lõpus on reavahetus:

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

Kommentaarid ja kohandatud vorming säilivad, kuni storh selle kirje järgmisel korral ümber kirjutab. Sama ID-ga `put()` asendab kogu faili kanoonilise väljundiga, seega käsitle kommentaare ajutiste märkmetena, mitte püsivate metaandmetena. Püsiv teave kuulub `data`-i.

Kodeerimisel säilivad Unicode ja kaldkriipsud ilma paomärkideta ning ujukomaarvu nullosa jääb alles (`1.0` jääb kujule `1.0`), nii et samade andmete dekodeerimine ja uuesti kodeerimine annab bait-baidilt sama tulemuse. Indeksimanifestid ja muud sisemised metaandmefailid on JSON objektid, mille lugemisel rakenduvad samad leebed reeglid.

`Jsonc::decode_object()` lükkab tagasi mitteobjektist dokumendid ja vigase sisendi.
`Jsonc::encode_object()` ja `Jsonc::encode_compact_object()` kirjutavad massiivid objektidokumentidena.
