
# JSONC

storh-lagerfiler er JSON-objekter, og læsning accepterer JSONC: linjekommentarer,
blokkommentarer og afsluttende kommaer. Det gør det sikkert at åbne og
annotere datafiler i en editor; storh kan stadig parse dem.

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

Læsning prøver først en streng `json_decode` og bruger kun JSONC-stripperen,
hvis det mislykkes, så kanoniske filer aldrig betaler for håndtering af kommentarer.

## Hvad storh skriver

Skrivninger er kanoniske, kompakte JSON på én linje med et afsluttende linjeskift:

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

Kommentarer og brugerdefineret formatering bevares, indtil storh omskriver posten.
En `put()` til samme id erstatter hele filen med kanonisk output, så
betragt kommentarer som midlertidige noter, ikke varige metadata. Varige oplysninger
hører hjemme i `data`.

Kodning bevarer Unicode og skråstreger uden escaping og bevarer decimaldelen af
flydende nulpunkter (`1.0` forbliver `1.0`), så afkodning og genkodning af de samme data er
byte-stabil. Indeksmanifestfiler og andre interne metadatafiler er JSON
objekter med samme læsetolerance.

`Jsonc::decode_object()` afviser dokumenter, der ikke er objekter, samt ugyldigt input.
`Jsonc::encode_object()` og `Jsonc::encode_compact_object()` skriver arrays som
objektdokumenter.
