Files
Workflow/tasks/json_transform.md

2.0 KiB

json_transform — JSON-Werte umformen

Zweck: Zieht per Pfadausdruck Werte aus einer JSON-Variable (z. B. Webhook-Antwort, *_json aus Auswahl-Tasks) und legt sie als Kontextvariablen ab — statt langer set_var/calc-Ketten. Pro <ziel> entsteht eine Variable; mehrere Treffer lassen sich aggregieren.

Parameter

Name Pflicht? Default Beschreibung
quelle ja JSON-String (Platzhalter erlaubt); ein einzelner {{var}} wird roh übernommen
ziel (name) ja Zielvariable; wiederholbar
ziel (pfad) ja Pfadausdruck (siehe unten)
ziel (aggregat) nein first first, last, sum, count, min, max, join, all
ziel (join) nein , Trenner bei aggregat="join"
ziel (default) nein (leer) Wert, wenn der Pfad nichts liefert

Pfadsyntax: feld.unterfeld (Objektzugriff), liste[0] (Index), liste[*] (alle Elemente → Array), liste[?key=wert] bzw. liste[?key!=wert] (Filter über String-Vergleich).

Eingangswerte: Die JSON-Variable unter <quelle>; Platzhalter in pfad.

Ausgangswerte:

  • je <ziel> eine Kontextvariable <name>
  • bei Array-/Objekt-Ergebnis zusätzlich <name>_json (JSON-String); <name> enthält dann den Roh-Wert (für loop_foreach nutzbar)

XML-Beispiel

<task type="json_transform" id="antwort_zerlegen">
  <config>
    <quelle>{{webhook_antwort}}</quelle>
    <ziel name="buchungsnr" pfad="ergebnis.nummer"/>
    <ziel name="summe"      pfad="posten[*].betrag" aggregat="sum"/>
    <ziel name="erste_id"   pfad="posten[0].id"/>
    <ziel name="offene"     pfad="posten[?status=offen].betrag" aggregat="join" join=", "/>
    <ziel name="anzahl"     pfad="posten[*]" aggregat="count"/>
    <ziel name="fallback"   pfad="gibts.nicht" default="-"/>
  </config>
</task>

Hinweis: <quelle> muss gültiges JSON enthalten, sonst endet der Task mit Fehler. aggregat wirkt nur, wenn der Pfad mehrere Werte liefert.