JSON-Pfade und Templates¶
Viele Teile der App lesen oder schreiben Daten über JSON-Pfade. Diese Seite fasst die Syntax und das Laufzeitverhalten zusammen.
JSON-Pfade¶
Die App nutzt eine einfache Pfadsprache ohne Wildcards.
Unterstützte Syntax¶
stateroom.temperaturerooms[0].nameavailable_scenes[2].label$für den gesamten Root-Wert
Nicht unterstützt¶
*- rekursive Suchen
- Filterausdrücke
- Array-Slices
Leseverhalten¶
Intern liest JsonPathResolver Werte so:
read(root, path)liefertJsonElement?readAsString(root, path)liefertString?stringify(element)wandelt Primitive und Objekte lesbar in Text um
Wenn ein Pfad nicht existiert:
- kommt
nullheraus TextSourceConfig.fallbackkann diesen Fall abfangen
Sonderfall Root-Wert:
- mit
$liest du den kompletten Root-Wert - das ist besonders praktisch für Endpoints, die nur einen primitiven Wert wie
on,42odertrueliefern
Template-Syntax¶
Templates nutzen doppelte geschweifte Klammern:
Jeder Platzhalter ist intern ein JSON-Pfad.
Beispiel für primitive Antworten:
Wenn ein Pfad nicht existiert:
- wird er durch einen leeren String ersetzt
Danach bereinigt die App überflüssige Leerzeichen vor Zeilenumbrüchen und trimmt den Gesamtausdruck.
Typische Einsatzorte für Pfade¶
title.valuebeimode = "path"value.valuebeimode = "path"odermode = "template"icon.namePathcolorRules[].when.pathslider.valuePathselect.valuePathselect.optionsPathselect.optionValuePathselect.optionLabelPathshutter.valuePathRequestActionValueBindingConfig.path
Pfade in Select-Optionen¶
Bei optionValuePath und optionLabelPath wird relativ zum jeweiligen Optionsobjekt gelesen.
Beispiel:
Dann funktionieren:
optionValuePath = "id"optionLabelPath = "label"
Bedingungen für Farbregeln¶
Beispiele:
Wahrheitswert prüfen¶
Numerischen Bereich prüfen¶
Regulärer Ausdruck¶
Schreiben in JSON über Pfade¶
JsonPathUpdater.upsert(...) wird für Action-Bindings und optimistische Updates verwendet.
Eigenschaften:
- legt fehlende Zwischenobjekte automatisch als leere JSON-Objekte an
- arbeitet nur mit Objektpfaden wie
room.level - Arrays werden beim Schreiben derzeit nicht erweitert
Beispiel:
Ausgangsbody:
Ergebnis nach Binding:
Typische Fehler¶
- falsche Schreibweise des Feldnamens
- Array-Index existiert nicht
keyundpathverwechselt, z. B. bei Header-Bindings- Erwartung, dass Templates fehlende Werte automatisch formatieren
Empfehlung¶
- flache und sprechende Felder bevorzugen
- bei Select-Optionen einheitliche Objektstruktur verwenden
- Templates nur für Anzeige, nicht für Logik verwenden
- bei Action-Bindings möglichst eindeutige JSON-Pfade nutzen