
# JSONC

storh-opslagbestanden zijn JSON-objecten en bij het lezen worden JSONC geaccepteerd: regelcomments, blokcomments en afsluitende komma's. Daardoor kunt u recordbestanden veilig openen en annoteren in een editor; storh kan ze nog steeds parseren.

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

Bij het lezen wordt eerst strikte `json_decode` geprobeerd. Alleen als dat mislukt, wordt teruggevallen op de JSONC-stripper, zodat canonieke bestanden geen extra kosten maken voor de afhandeling van comments.

## Wat storh schrijft

Schrijfbewerkingen produceren canonieke, compacte JSON op één regel, met een afsluitende newline:

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

Comments en aangepaste opmaak blijven behouden totdat storh dat record opnieuw wegschrijft. Een `put()` naar dezelfde ID vervangt het volledige bestand door canonieke uitvoer. Beschouw comments dus als tijdelijke notities, niet als blijvende metadata. Blijvende informatie hoort in `data`.

De codering behoudt Unicode en slashes zonder ze te escapen, en behoudt de nulfracties van floats (`1.0` blijft `1.0`), zodat het decoderen en opnieuw coderen van dezelfde gegevens byte-stabiel is. Indexmanifests en andere interne metadatabestanden zijn JSON-objecten met dezelfde leesflexibiliteit.

`Jsonc::decode_object()` weigert documenten die geen object zijn en ongeldige invoer.
`Jsonc::encode_object()` en `Jsonc::encode_compact_object()` schrijven arrays als objectdocumenten.
