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
| Parameter | Typ | Beschreibung |
|---|---|---|
format | string | Die Formatzeichenkette, die Platzhalter enthält. Platzhalter werden als {$.json.path} definiert, wobei der JSON-Pfad auf Werte im aktuellen Datenkontext verweist |
targetPath | string | Der JSON-Pfad, unter dem das formatierte Ergebnis gespeichert wird |
Optionale Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
nullValue | string | "NULL" | Die Zeichenkette, die verwendet wird, wenn ein JSON-Pfad zu einem null-Wert aufgelöst wird |
targetValueWriteMode | enum | - | Wie der Wert geschrieben wird (siehe Überblick) |
targetValueKind | enum | - | Die Art des Zielwerts (siehe Überblick) |
documentMode | enum | - | Der Dokumentmodus für die Operation (siehe Überblick) |
Funktionsweise
- Platzhaltererkennung: Der Node durchsucht die Formatzeichenkette nach Platzhaltern im Muster
{$.path.to.value} - Wertauflösung: Für jeden Platzhalter wertet er den JSON-Pfad gegen den aktuellen Datenkontext aus
- Wertersetzung: Ersetzt jeden Platzhalter durch den aufgelösten Wert (oder durch
nullValue, falls null) - 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