
# JSONC

Файловете в storh са JSON обекти, а при четене се приемат JSONC: коментари на ред, блокови коментари и крайни запетаи. Така файловете със записи могат безопасно да се отварят и анотират в редактор; storh продължава да ги анализира.

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

При четене първо се опитва със строг `json_decode` и към премахващия JSONC се преминава само при неуспех, така че каноничните файлове не плащат цена за обработка на коментари.

## Какво записва storh

Записите са канонични, компактни, на един ред, във формат JSON и завършват с нов ред:

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

Коментарите и персоналното форматиране се запазват, докато storh не запише наново този запис. `put()` със същия идентификатор заменя целия файл с каноничен изход, затова използвайте коментарите като временни бележки, а не като трайни метаданни. Трайната информация принадлежи в `data`.

Кодирането запазва Unicode и наклонените черти без екраниране и съхранява дробната част при нулеви стойности с плаваща запетая (`1.0` остава `1.0`), така че декодирането и повторното кодиране на едни и същи данни дава същите байтове. Манифестите на индексите и другите вътрешни файлове с метаданни са JSON обекти със същата толерантност при четене.

`Jsonc::decode_object()` отхвърля документи, които не са обекти, и невалиден вход.
`Jsonc::encode_object()` и `Jsonc::encode_compact_object()` записват масивите като обекти на документ.
