
# JSONC

Os arquivos de armazenamento storh são objetos JSON, e as leituras aceitam JSONC: comentários de linha,
comentários de bloco e vírgulas finais. Assim, é seguro abrir e anotar os arquivos de registro em
um editor; storh continua fazendo a análise.

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

As leituras primeiro tentam uma análise `json_decode` estrita e só recorrem ao removedor JSONC
quando ela falha, então os arquivos canônicos não têm o custo do tratamento de comentários.

## O que storh grava

As gravações são documentos JSON canônicos, compactos e de uma só linha, com uma quebra de linha ao final:

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

Comentários e formatação personalizada são preservados até que storh regrave o registro.
Uma `put()` no mesmo ID substitui o arquivo inteiro pela saída canônica, então
trate os comentários como anotações temporárias, não como metadados duráveis. Informações duráveis
pertencem a `data`.

A codificação preserva Unicode e barras sem escape e mantém frações zero em números de ponto flutuante
(`1.0` continua sendo `1.0`), para que a decodificação e a recodificação dos mesmos dados sejam
estáveis em bytes. Os manifestos de índice e outros arquivos de metadados internos são objetos JSON
com a mesma tolerância de leitura.

`Jsonc::decode_object()` rejeita documentos que não sejam objetos e entradas malformadas.
`Jsonc::encode_object()` e `Jsonc::encode_compact_object()` gravam arrays como
documentos de objeto.
