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 System.Json.JsonObject nicht auswählbar
Keine ArraysDatentyp System.Json.JsonArray 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 (Typ System.Json.JsonObject) und füllt es mit Schlüssel-Wert-Paaren. Ein oft übersehenes Feld: Das Eingabefeld JSON Object 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 JSON Object eine Variable ProductSpecs (Typ System.Json.JsonObject) 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 System.Json.JsonObject) im Feld Result JSON Object 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 Variablen vom Typ System.Json.JsonObject (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 System.Json.JsonObject) 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” erzwingt den Typ Decimal (exakte Dezimalpräzision)
  • ProductSpecs – Bettet das zuvor erstellte JSON-Objekt 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 JSON Object (Eingabe) als auch Result JSON Object (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. Das Suffix D erzwingt den Typ Decimal und damit exakte Dezimalpräzision. Ohne Suffix ist 19.99 bereits ein Double (Gleitkomma) – gerundet wird also nicht. Die Rundung auf 19 (Integer) tritt nur auf, wenn ein Wert über das Typ-Dropdown der „Set JSON”-Aktivität als Integer angelegt wird – nicht im VB.NET-Ausdruck.

Kann ich mehrere Objekte in einem Array zusammenfassen?

Ja, mit New Json.JsonArray From {Objekt1, Objekt2, Objekt3} können beliebig viele Variablen vom Typ System.Json.JsonObject in ein Array eingefügt werden.

Wie modifiziere ich ein bestehendes JSON-Objekt?

Die Variable sowohl in das Eingabefeld JSON Object als auch in das Ausgabefeld Result JSON Object der „Set JSON”-Aktivität eintragen. So werden neue Eigenschaften zum bestehenden Objekt hinzugefügt.

Verwandte Quick Wins

Eine Übersicht unserer produktiv nutzbaren Erweiterungen finden Sie unter Matrix42 Extensions.

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.

Diesen Beitrag teilen

So finden andere diese Inhalte leichter.

LinkedIn X

War dieser Artikel hilfreich?

Wir freuen uns über Feedback.