Quick Win

Matrix42: Verschachtelte JSON-Objekte ohne PowerShell erstellen

Komplexe JSON-Strukturen mit verschachtelten Objekten und Arrays direkt im Matrix42 Workflow-Studio erstellen – ganz ohne PowerShell.

Torben Soennecken 24. Januar 2025

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:

LimitationProblem
Keine verschachtelten ObjekteDatentyp JObject nicht auswählbar
Keine ArraysDatentyp JArray nicht auswählbar
Keine DezimalzahlenNur Integer verfügbar – 19.99 wird zu 19
Keine reinen Datums-TypenDateTime 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:

  1. Set JSON – Erstellt ein JSON-Objekt (JObject) und füllt es mit Schlüssel-Wert-Paaren. Ein oft übersehenes Feld: Das Eingabefeld JObject erlaubt es, ein bereits existierendes JSON-Objekt zu modifizieren.
  2. Assign – Initialisiert komplexe Strukturen programmatisch
  3. 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:

  1. „Set JSON”-Aktivität hinzufügen, Name: „Set Specs”
  2. Im Feld Result JObject eine Variable ProductSpecs (Typ JObject) erstellen
  3. Properties definieren:
    • inkColor → String → "Blue"
    • tipSize → String → "0.7mm"
    • refillable → Boolean → True

Product-Review-Objekt:

  1. Weitere „Set JSON“-Aktivität, Name: „Set Review“
  2. Variable ProductReview (Typ JObject) im Feld Result JObject erstellen
  3. Properties definieren:
    • rating → Integer → 5
    • comment → String → "Hervorragendes Produkt"
    • date → DateTime → Expression: DateTime.UtcNow
    • reviewerName → 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 inkColor erwartet, 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.“

  1. „Assign”-Aktivität hinzufügen, Name: „Init Body”
  2. Im Feld To eine Variable ProductDetailsBody (Typ JObject) erstellen
  3. Im Feld Value folgenden 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 Dezimalzahl
  • ProductSpecs – Bettet das zuvor erstellte JObject ein
  • New 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.

  1. „Set JSON”-Aktivität, Name: „Set Body”
  2. Wichtig: ProductDetailsBody sowohl in JObject (Eingabe) als auch Result JObject (Ausgabe) eintragen
  3. Properties hinzufügen:
    • title → String → "Beispiel-Produkt"
    • category → String → "Stationery"
    • description → String → "Produktbeschreibung"

4. Objekt via „HTTP Send” senden

  1. „HTTP Send”-Aktivität konfigurieren:

    • HTTP-Methode: POST oder PUT
    • ContentType: JSON
    • Endpunkt-URL eintragen
  2. Im Feld RequestData das 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:

AspektUmsetzung
Authentifizierung„HTTP Send” unterstützt API-Keys, OAuth und weitere Methoden
FehlerbehandlungAuf Response Status Code reagieren, Logging implementieren
Retry-LogikRetry 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.

Noch Fragen zur Konfiguration?

Unsere Engineers stehen gerne zur Verfügung, um bei der Einrichtung oder Anpassung zu helfen.

Wir antworten in der Regel innerhalb von 24h.

War dieser Artikel hilfreich?

Wir freuen uns über Feedback.