Das Matrix42 Workflow-Studio bietet mit „Set JSON” und „HTTP Send” Werkzeuge für API-Kommunikation. Bei verschachtelten JSON-Strukturen greifen viele auf PowerShell zurück – unnötigerweise. Dieser Quick Win zeigt, wie komplexe JSON-Objekte mit nativen Bordmitteln erstellt werden.
Die Herausforderung: JSON-Limitierungen im Workflow-Studio
Die „Set JSON”-Aktivität unterstützt nur einfache Datentypen:
| Limitation | Problem |
|---|---|
| Keine verschachtelten Objekte | Datentyp JObject nicht auswählbar |
| Keine Arrays | Datentyp JArray nicht auswählbar |
| Keine Dezimalzahlen | Nur Integer verfügbar – 19.99 wird zu 19 |
| Keine reinen Datums-Typen | DateTime enthält immer Zeitkomponente |
Die Lösung: Schritt für Schritt zum verschachtelten JSON
Als Beispiel erstellen wir folgendes JSON-Objekt:
{
"title": "Beispiel-Produkt",
"category": "Stationery",
"price": 19.99,
"specs": {
"inkColor": "Blue",
"tipSize": "0.7mm",
"refillable": true
},
"reviews": [
{
"rating": 5,
"comment": "Hervorragendes Produkt",
"date": "2025-01-24T09:15:00Z"
}
]
}
Die Werkzeuge
Drei Aktivitäten aus dem „General“-Tab werden benötigt:
- Set JSON – Erstellt ein JSON-Objekt (
JObject) und füllt es mit Schlüssel-Wert-Paaren. Ein oft übersehenes Feld: Das EingabefeldJObjecterlaubt es, ein bereits existierendes JSON-Objekt zu modifizieren. - Assign – Initialisiert komplexe Strukturen programmatisch
- HTTP Send – Sendet das fertige Objekt an die API
1. Flache JSON-Objekte für Unterdaten erstellen
Wir arbeiten von innen nach außen. Zuerst die untergeordneten Objekte.
Product-Specs-Objekt:
- „Set JSON”-Aktivität hinzufügen, Name: „Set Specs”
- Im Feld
Result JObjecteine VariableProductSpecs(TypJObject) erstellen - Properties definieren:
inkColor→ String →"Blue"tipSize→ String →"0.7mm"refillable→ Boolean →True
Product-Review-Objekt:
- Weitere „Set JSON“-Aktivität, Name: „Set Review“
- Variable
ProductReview(TypJObject) im FeldResult JObjecterstellen - Properties definieren:
rating→ Integer →5comment→ String →"Hervorragendes Produkt"date→ DateTime → Expression:DateTime.UtcNowreviewerName→ String →"Max Mustermann"reviewerMail→ String →"max.mustermann@example.de"
Nach diesem Schritt existieren zwei separate JObject-Variablen (ProductSpecs und ProductReview).
Hinweis: Attributnamen sind oft case-sensitive. Wenn die API
inkColorerwartet, muss es exakt so geschrieben werden.
2. Komplexe Strukturen mit „Assign” initialisieren
Der Trick: Mit einer „Assign“-Aktivität umgehen wir die Limitierungen der „Set JSON“-Aktivität.
Best Practice: Die Verwendung einer dedizierten
Assign-Aktivität verbessert die Lesbarkeit. Sie signalisiert anderen Fachkräften sofort: „Hier wird eine Struktur programmatisch initialisiert.“
- „Assign”-Aktivität hinzufügen, Name: „Init Body”
- Im Feld
Toeine VariableProductDetailsBody(TypJObject) erstellen - Im Feld
Valuefolgenden VB.NET-Ausdruck eingeben:
New Json.JsonObject From {
{"price", 19.99D},
{"specs", ProductSpecs},
{"reviews", New Json.JsonArray From {ProductReview}}
}
Erklärung:
19.99D– Das Suffix „D” definiert eine DezimalzahlProductSpecs– Bettet das zuvor erstellte JObject einNew Json.JsonArray From {...}– Erstellt ein Array „on the fly”
3. Das finale JSON-Objekt vervollständigen
Die restlichen Top-Level-Attribute werden mit einer weiteren „Set JSON”-Aktivität hinzugefügt.
- „Set JSON”-Aktivität, Name: „Set Body”
- Wichtig:
ProductDetailsBodysowohl inJObject(Eingabe) als auchResult JObject(Ausgabe) eintragen - Properties hinzufügen:
title→ String →"Beispiel-Produkt"category→ String →"Stationery"description→ String →"Produktbeschreibung"
4. Objekt via „HTTP Send” senden
-
„HTTP Send”-Aktivität konfigurieren:
- HTTP-Methode:
POSToderPUT ContentType:JSON- Endpunkt-URL eintragen
- HTTP-Methode:
-
Im Feld
RequestDatadas Objekt in einen String umwandeln:
ProductDetailsBody.ToString()
5. Test und Verifizierung
Im Debug-Modus das Ergebnis im RequestData-Feld der Aktivität prüfen. Dort sollte der vollständige JSON-String mit korrekter Struktur sichtbar sein.
Produktionsreife Automatisierung
Der gezeigte Workflow ist ein Prototyp. Für den produktiven Einsatz zusätzlich beachten:
| Aspekt | Umsetzung |
|---|---|
| Authentifizierung | „HTTP Send” unterstützt API-Keys, OAuth und weitere Methoden |
| Fehlerbehandlung | Auf Response Status Code reagieren, Logging implementieren |
| Retry-Logik | Retry Condition der „HTTP Send”-Aktivität nutzen |
Zusammenfassung
PowerShell ist für komplexe JSON-Objekte in Matrix42-Workflows nicht notwendig. Der Schlüssel liegt in der Kombination von „Set JSON” und „Assign”. Diese Methode ist technisch sauber, performant und wartbar.
Häufig gestellte Fragen
Warum kein PowerShell für JSON-Erstellung?
PowerShell-Skripte erhöhen die Komplexität und Wartungsaufwand. Die nativen Aktivitäten „Set JSON” und „Assign” sind schneller, besser lesbar und erfordern keine externen Abhängigkeiten.
Was ist der Unterschied zwischen Set JSON und Assign?
„Set JSON” erstellt oder modifiziert flache JSON-Objekte mit Schlüssel-Wert-Paaren. „Assign” ermöglicht das programmatische Initialisieren komplexer Strukturen mit verschachtelten Objekten und Arrays.
Wie definiere ich Dezimalzahlen korrekt?
Im VB.NET-Ausdruck das Suffix D verwenden: 19.99D. Ohne Suffix würde der Wert als Integer interpretiert und auf 19 gerundet.
Kann ich mehrere Objekte in einem Array zusammenfassen?
Ja, mit New Json.JsonArray From {Objekt1, Objekt2, Objekt3} können beliebig viele JObject-Variablen in ein Array eingefügt werden.
Wie modifiziere ich ein bestehendes JSON-Objekt?
Die Variable sowohl in das Eingabefeld JObject als auch in das Ausgabefeld Result JObject der „Set JSON”-Aktivität eintragen. So werden neue Eigenschaften zum bestehenden Objekt hinzugefügt.