
# 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()` записують масиви як
документи-об’єкти.
