JSONC
Файлы хранения storh являются объектами JSON, а при чтении допускаются JSONC: однострочные и блочные комментарии, а также завершающие запятые. Поэтому файлы записей можно безопасно открывать и комментировать в редакторе; storh по-прежнему может их разбирать.
{
// Application-owned fields live under data.
"id": "018bcfe5-6800-7000-8000-000000000000",
"data": {
"title": "Home",
},
}
Сначала выполняется строгий разбор json_decode, и только при ошибке используется средство удаления JSONC, поэтому при чтении канонических файлов обработка комментариев не требуется.
Что записывает storh
Данные записываются в каноническом компактном формате JSON: в одну строку с завершающим переводом строки:
{"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() записывают массивы как документы-объекты.