
# JSONC

storh saugyklos failai yra JSON objektai, o skaitant priimama JSONC: eilučių komentarai, blokiniai komentarai ir galiniai kableliai. Taip įrašų failus saugu atverti ir anotuoti redaktoriuje; storh vis tiek juos išanalizuoja.

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

Pirmiausia bandoma griežtai skaityti `json_decode`, o tik nesėkmės atveju naudojamas JSONC šalinimo įrankis, todėl kanoniniams failams nereikia apdoroti komentarų.

## Ką rašo storh

Įrašai yra kanoniniai, kompaktiški, vienos eilutės JSON su galiniu naujos eilutės simboliu:

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

Komentarai ir pasirinktinis formatavimas išlieka, kol storh kitą kartą perrašo tą įrašą.
`put()` į tą patį ID pakeičia visą failą kanoniniu išrašu, todėl komentarus laikykite laikinais užrašais, o ne ilgalaikiais metaduomenimis. Ilgalaikė informacija priklauso `data`.

Koduojant „Unicode“ simboliai ir pasvirieji brūkšniai paliekami neekranuoti, o nulio trupmeninės dalys išsaugomos (`1.0` lieka `1.0`), todėl tų pačių duomenų iškodavimas ir pakartotinis kodavimas duoda baitų požiūriu identišką rezultatą. Indeksų manifestai ir kiti vidinių metaduomenų failai yra JSON objektai, kuriems taikomas toks pats lankstus skaitymas.

`Jsonc::decode_object()` atmeta ne objektų dokumentus ir netaisyklingus duomenis.
`Jsonc::encode_object()` ir `Jsonc::encode_compact_object()` masyvus įrašo kaip objektų dokumentus.
