
# JSONC

storh-tallennustiedostot ovat JSON-objekteja, ja luku hyväksyy JSONC-muodon: rivikommentit, lohkokommentit ja pilkut viimeisten alkioiden jälkeen. Tietuetiedostot voi siis avata ja kommentoida editorissa turvallisesti; storh jäsentää ne silti.

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

Luku yrittää ensin tiukkaa `json_decode`-jäsennystä ja siirtyy JSONC-poistajaan vasta sen epäonnistuessa, joten kanonisiin tiedostoihin ei koskaan kulu aikaa kommenttien käsittelyyn.

## Mitä storh kirjoittaa

Kirjoitukset ovat kanonisia, tiiviitä, yksirivisiä JSON-tiedostoja, joiden lopussa on rivinvaihto:

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

Kommentit ja mukautettu muotoilu säilyvät, kunnes storh kirjoittaa kyseisen tietueen uudelleen. `put()` samalle tunnukselle korvaa koko tiedoston kanonisella tulosteella, joten käsittele kommentteja väliaikaisina muistiinpanoina, älä pysyvänä metatietona. Pysyvät tiedot kuuluvat kohteeseen `data`.

Koodaus säilyttää Unicode-merkit ja kauttaviivat koodaamattomina sekä säilyttää liukuluvun nollan murto-osan (`1.0` pysyy arvona `1.0`), joten saman datan purku ja uudelleenkoodaus tuottavat tavutasolla saman tuloksen. Indeksien luettelotiedostot ja muut sisäiset metatietotiedostot ovat JSON-objekteja, ja niiden luku sallii samat poikkeamat.

`Jsonc::decode_object()` hylkää ei-objektimuotoiset dokumentit ja virheellisen syötteen. `Jsonc::encode_object()` ja `Jsonc::encode_compact_object()` kirjoittavat taulukot objektidokumentteina.
