Zum Hauptinhalt springen

FormatString@1

Der Node FormatString@1 erzeugt formatierte Zeichenketten, indem er JSON-Pfad-Platzhalter durch tatsächliche Werte aus dem Datenkontext ersetzt.

Adapter-Voraussetzungen​

  • Allgemeine Verfügbarkeit: Alle Adapter unterstützen diesen Node-Typ.

Node-Konfiguration​

Für die Felder targetPath, targetValueWriteMode und targetValueKind siehe Überblick.

transformations:
- type: FormatString@1
targetPath: $.formattedMessage # Path where the formatted string will be stored
format: "Invoice {$.InvoiceNumber} from {$.Customer.Name} - Total: {$.Total} EUR" # Format string with placeholders
nullValue: "N/A" # String to use for null values (default: "NULL")

Parameter​

Erforderliche Parameter​

ParameterTypBeschreibung
formatstringDie Formatzeichenkette, die Platzhalter enthält. Platzhalter werden als {$.json.path} definiert, wobei der JSON-Pfad auf Werte im aktuellen Datenkontext verweist
targetPathstringDer JSON-Pfad, unter dem das formatierte Ergebnis gespeichert wird

Optionale Parameter​

ParameterTypStandardBeschreibung
nullValuestring"NULL"Die Zeichenkette, die verwendet wird, wenn ein JSON-Pfad zu einem null-Wert aufgelöst wird
targetValueWriteModeenum-Wie der Wert geschrieben wird (siehe Überblick)
targetValueKindenum-Die Art des Zielwerts (siehe Überblick)
documentModeenum-Der Dokumentmodus für die Operation (siehe Überblick)

Funktionsweise​

  1. Platzhaltererkennung: Der Node durchsucht die Formatzeichenkette nach Platzhaltern im Muster {$.path.to.value}
  2. Wertauflösung: Für jeden Platzhalter wertet er den JSON-Pfad gegen den aktuellen Datenkontext aus
  3. Wertersetzung: Ersetzt jeden Platzhalter durch den aufgelösten Wert (oder durch nullValue, falls null)
  4. Ergebnisspeicherung: Speichert die formatierte Zeichenkette unter dem angegebenen targetPath

Platzhaltersyntax​

Platzhalter müssen diesem Muster folgen:

  • Beginnen mit {
  • Enthalten einen gültigen JSON-Pfad, der mit $ beginnt
  • Enden mit }

Beispiele:

  • {$.name} – Einfacher Eigenschaftszugriff
  • {$.customer.address.city} – Zugriff auf verschachtelte Eigenschaften
  • {$.items[0].price} – Zugriff auf Array-Elemente
  • {$.metadata['special-key']} – Klammernotation für Sonderzeichen

Fehlerbehandlung​

Der Node löst einen Fehler aus, wenn:

  • Ein JSON-Pfad in einem Platzhalter in den Daten nicht existiert
  • Ein JSON-Pfad zu einem komplexen Typ (Objekt oder Array) statt zu einem einfachen Wert aufgelöst wird
  • Die JSON-Pfad-Syntax ungültig ist

Beispiele​

Beispiel 1: Einfache Nachrichtenformatierung​

transformations:
- type: FormatString@1
targetPath: $.message
format: "Hello {$.firstName} {$.lastName}, welcome to {$.company}!"

Eingabe:

{
"firstName": "John",
"lastName": "Doe",
"company": "MeshMakers"
}

Ausgabe:

{
"firstName": "John",
"lastName": "Doe",
"company": "MeshMakers",
"message": "Hello John Doe, welcome to MeshMakers!"
}

Beispiel 2: Rechnungszusammenfassung mit null-Behandlung​

transformations:
- type: FormatString@1
targetPath: $.summary
format: "Invoice #{$.invoiceNumber} | Customer: {$.customer.name} | PO: {$.purchaseOrder} | Total: {$.total} {$.currency}"
nullValue: "N/A"

Eingabe:

{
"invoiceNumber": "INV-2024-001",
"customer": {
"name": "Acme Corp"
},
"purchaseOrder": null,
"total": 1250.50,
"currency": "EUR"
}

Ausgabe:

{
"invoiceNumber": "INV-2024-001",
"customer": {
"name": "Acme Corp"
},
"purchaseOrder": null,
"total": 1250.50,
"currency": "EUR",
"summary": "Invoice #INV-2024-001 | Customer: Acme Corp | PO: N/A | Total: 1250.5 EUR"
}

Beispiel 3: URLs aus Daten erstellen​

transformations:
- type: FormatString@1
targetPath: $.dashboardUrl
format: "https://dashboard.example.com/projects/{$.projectId}/tasks/{$.taskId}?user={$.assignee.email}"

Eingabe:

{
"projectId": "PROJ-123",
"taskId": "TASK-456",
"assignee": {
"name": "Jane Smith",
"email": "jane.smith@example.com"
}
}

Ausgabe:

{
"projectId": "PROJ-123",
"taskId": "TASK-456",
"assignee": {
"name": "Jane Smith",
"email": "jane.smith@example.com"
},
"dashboardUrl": "https://dashboard.example.com/projects/PROJ-123/tasks/TASK-456?user=jane.smith@example.com"
}

Beispiel 4: Erzeugung von Log-Nachrichten​

transformations:
- type: FormatString@1
targetPath: $.logEntry
format: "[{$.timestamp}] {$.level}: {$.service} - {$.message} (Duration: {$.duration}ms)"

Eingabe:

{
"timestamp": "2024-01-15T10:30:45Z",
"level": "ERROR",
"service": "PaymentService",
"message": "Payment processing failed",
"duration": 1234
}

Ausgabe:

{
"timestamp": "2024-01-15T10:30:45Z",
"level": "ERROR",
"service": "PaymentService",
"message": "Payment processing failed",
"duration": 1234,
"logEntry": "[2024-01-15T10:30:45Z] ERROR: PaymentService - Payment processing failed (Duration: 1234ms)"
}

Beispiel 5: Erzeugung einer SQL-Abfrage​

transformations:
- type: FormatString@1
targetPath: $.sqlQuery
format: "SELECT * FROM {$.table} WHERE status = '{$.filter.status}' AND created_date >= '{$.filter.startDate}' ORDER BY {$.sortField} {$.sortOrder}"

Eingabe:

{
"table": "orders",
"filter": {
"status": "pending",
"startDate": "2024-01-01"
},
"sortField": "created_date",
"sortOrder": "DESC"
}

Ausgabe:

{
"table": "orders",
"filter": {
"status": "pending",
"startDate": "2024-01-01"
},
"sortField": "created_date",
"sortOrder": "DESC",
"sqlQuery": "SELECT * FROM orders WHERE status = 'pending' AND created_date >= '2024-01-01' ORDER BY created_date DESC"
}

Anwendungsfälle​

  • Nachrichtenerzeugung: Benutzerfreundliche Nachrichten aus strukturierten Daten erstellen
  • URL-Konstruktion: Dynamische URLs für APIs oder Webanwendungen erstellen
  • Log-Formatierung: Standardisierte Log-Einträge erzeugen
  • Berichtserstellung: Formatierte Textzusammenfassungen aus Daten erstellen
  • Abfrageerstellung: Datenbankabfragen oder Suchzeichenketten konstruieren
  • Benachrichtigungsvorlagen: E-Mail-Betreffzeilen oder SMS-Nachrichten formatieren
  • Dateibenennung: Dynamische Dateinamen auf Basis von Datenattributen erzeugen

Hinweise​

  • Nur einfache Werte: Platzhalter müssen zu einfachen Werten (Zeichenkette, Zahl, boolescher Wert, null) aufgelöst werden. Objekte und Arrays werden nicht unterstützt
  • Pfadvalidierung: Alle JSON-Pfade in Platzhaltern müssen in den Daten existieren, andernfalls schlägt der Node fehl
  • null-Behandlung: Verwenden Sie den Parameter nullValue, um zu steuern, wie null-Werte angezeigt werden
  • Kein Escaping: Der Node bietet keine Escape-Mechanismen für wörtliche geschweifte Klammern. Wenn Sie ein wörtliches { oder } in Ihrer Ausgabe benötigen, sollten Sie einen anderen Ansatz in Betracht ziehen
  • Performance: Der Node verwendet kompilierte reguläre Ausdrücke für eine effiziente Platzhaltererkennung
  • Typumwandlung: Alle Werte werden mit ihrer standardmäßigen Zeichenkettendarstellung in Zeichenketten umgewandelt