跳转到正文

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 下次重写该记录。同一 ID 上的 put() 会用规范输出替换整个文件,因此请将注释视为临时笔记,而非持久元数据。持久信息应存放在 data 中。

编码时会保留未转义的 Unicode 字符和斜杠,并保留浮点数的零小数部分(1.0 保持为 1.0),因此对相同数据进行解码再编码后,字节内容保持稳定。索引清单及其他内部元数据文件均为 JSON 对象,读取时也有相同的容错能力。

Jsonc::decode_object() 会拒绝非对象文档和格式错误的输入。 Jsonc::encode_object() 和 Jsonc::encode_compact_object() 会将数组写为 对象文档。