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