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が書き込む形式
書き込みでは、末尾に改行を付けた正規形式のコンパクトな1行の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()は、配列をオブジェクトドキュメントとして書き込みます。