Перейти к содержимому

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