Zum Inhalt springen

JSONC

Die Speicherdateien von storh sind JSON-Objekte. Beim Lesen wird JSONC mit Zeilenkommentaren, Blockkommentaren und abschließenden Kommas akzeptiert. Dadurch lassen sich Datensatzdateien sicher in einem Editor öffnen und kommentieren; storh kann sie weiterhin verarbeiten.

Jsonc
{
  // Application-owned fields live under data.
  "id": "018bcfe5-6800-7000-8000-000000000000",
  "data": {
    "title": "Home",
  },
}

Beim Lesen wird zuerst ein striktes json_decode versucht. Nur wenn das fehlschlägt, wird auf den JSONC-Bereinigungsmechanismus zurückgegriffen, sodass kanonische Dateien nicht für die Kommentarverarbeitung aufkommen müssen.

Was storh schreibt

Geschrieben wird kanonisches, kompaktes, einzeiliges JSON mit einem abschließenden Zeilenumbruch:

Text
{"id":"018bcfe5-6800-7000-8000-000000000000","data":{"title":"Home"}}

Kommentare und eigene Formatierungen bleiben erhalten, bis storh den Datensatz erneut schreibt. Ein put() für dieselbe ID ersetzt die gesamte Datei durch eine kanonische Ausgabe. Behandle Kommentare daher als temporäre Notizen, nicht als dauerhafte Metadaten. Dauerhafte Informationen gehören in data.

Bei der Kodierung bleiben Unicode und Schrägstriche unmaskiert, und Nachkommastellen bei Fließkommazahlen bleiben erhalten (1.0 bleibt 1.0). Dadurch sind die Bytes nach dem Dekodieren und erneuten Kodieren derselben Daten identisch. Indexmanifeste und andere interne Metadatendateien sind JSON-Objekte und werden mit derselben Toleranz gelesen.

Jsonc::decode_object() weist Dokumente zurück, die keine Objekte sind oder fehlerhafte Eingaben enthalten. Jsonc::encode_object() und Jsonc::encode_compact_object() schreiben Arrays als Objektdokumente.