Transformieren von JSON und XML mithilfe von Liquid-Vorlagen als Zuordnungen in Workflows mithilfe von Azure Logic Apps

Gilt für: Azure Logic Apps (Verbrauch + Standard)

Wenn Sie grundlegende JSON-Transformationen in Ihren Logik-App-Workflows ausführen möchten, können Sie integrierte Datenvorgänge wie die Aktion Compose oder die Aktion Parse JSON verwenden. Einige Szenarien erfordern jedoch unter Umständen erweiterte und komplexe Transformationen, die Elemente wie Iterationen, Ablaufsteuerungen und Variablen enthalten. Bei Transformationen von JSON in JSON, JSON in Text, XML in JSON oder XML in Text können Sie eine Vorlage erstellen, die die erforderliche Zuordnung oder Transformation mithilfe der Open-Source-Vorlagensprache „Liquid“ beschreibt. Sie können diese Vorlage auswählen, wenn Sie Ihrem Workflow eine integrierte Liquid-Aktion hinzufügen. Sie können Liquid-Aktionen in mehrinstanzenfähigen Verbrauchs-Logik-App-Workflows und Standard-Logik-App-Workflows mit Einzelinstanz verwenden.

Wenn keine Liquid-Trigger verfügbar sind, können Sie beliebige Trigger oder Aktionen verwenden, um den JSON- oder XML-Quellinhalt an Ihren Workflow zu übergeben. Sie können beispielsweise einen integrierten Connectortrigger, einen verwalteten oder von Azure gehosteten Connectortrigger, der für Azure Logic Apps verfügbar ist, oder sogar eine andere App verwenden.

In diesem Artikel wird gezeigt, wie Sie die folgenden Aufgaben ausführen:

  • Erstellen einer Liquid-Vorlage.
  • Laden Sie die Vorlage in Ihr Integrationskonto für Verbrauchs-Logik-App-Workflows oder in Ihre Standard-Logik-App-Ressource für die Verwendung in einem beliebigen untergeordneten Workflow hoch.
  • Fügen Sie Ihrem Workflow eine Liquid-Aktion hinzu.
  • Auswählen der Vorlage als die Zuordnung, die Sie verwenden möchten.

Weitere Informationen finden Sie in der folgenden Dokumentation:

Voraussetzungen

  • Ein Azure-Konto und ein Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie sich für ein kostenloses Azure-Konto registrieren.

  • Ihre Logik-App-Ressource und Ihr Workflow. Liquide-Vorgänge beinhalten keine Trigger, sodass Ihr Workflow zumindest einen Trigger enthalten muss. Weitere Informationen finden Sie in der folgenden Dokumentation:

  • Basierend darauf, ob Sie einen Verbrauchs- oder Standard-Logik-App-Workflow erstellen, benötigen Sie eine Integrationskontoressource. Normalerweise benötigen Sie diese Ressource, wenn Sie Artefakte für die Verwendung in Unternehmensintegrations- und B2B-Workflows definieren und speichern möchten.

    Wichtig

    Für die Zusammenarbeit müssen sowohl Ihre Integrationskonto- als auch Ihre Logik-App-Ressource in demselben Azure-Abonnement und in derselben Azure-Region vorhanden sein.

    • Wenn Sie an einem Verbrauchs-Logik-App-Workflow arbeiten, muss Ihr Integrationskonto mit Ihrer Logik-App-Ressource verknüpft werden.

    • Wenn Sie an einem Standard-Logik-App-Workflow arbeiten, können Sie Ihr Integrationskonto mit Ihrer Logik-App-Ressource verknüpfen, Zuordnungen direkt in Ihre Logik-App-Ressource hochladen oder beides, basierend auf den folgenden Szenarien:

      • Wenn Sie bereits über ein Integrationskonto mit den Artefakten verfügen, die Sie benötigen oder verwenden möchten, können Sie das Integrationskonto mit mehreren Standard-Logik-App-Ressourcen verknüpfen, in denen Sie die Artefakte verwenden möchten. Auf diese Weise müssen Sie keine Zuordnungen in die einzelnen Logik-Apps hochladen. Weitere Informationen finden Sie im Artikel zum Verknüpfen Ihrer Logik-App-Ressource mit Ihrem Integrationskonto.

      • Mit dem integrierten Liquid-Connector können Sie eine Zuordnung auswählen, die Sie zuvor in Ihre Logik-App-Ressource oder in ein verknüpftes Integrationskonto (aber nicht in beides), hochgeladen haben. Sie können diese Artefakte dann in allen untergeordneten Workflows innerhalb derselben Logik-App-Ressource verwenden.

      Wenn Sie also kein Integrationskonto haben oder benötigen, können Sie die Uploadoption verwenden. Andernfalls können Sie die Verknüpfungsoption verwenden. In beiden Fällen können Sie diese Artefakte in allen untergeordneten Workflows innerhalb derselben Logik-App-Ressource verwenden.

  • Grundlegende Kenntnisse der Liquid Template Sprache. Azure Logic Apps nutzen DotLiquid 2.0.361.

    Hinweis

    Die Liquid-Aktion Von JSON in JSON transformieren folgt der DotLiquid-Implementierung für Liquid, die sich in bestimmten Fällen von der Shopify-Implementierung für Liquid unterscheidet. Weitere Informationen finden Sie unter Überlegungen zur Liquid-Vorlage.

Schritt 1: Erstellen der Vorlage

Bevor Sie eine Liquid-Transformation in Ihrem Logik-App-Workflow ausführen können, müssen Sie zunächst eine Liquid-Vorlage erstellen, die die gewünschte Zuordnung definiert.

  1. Erstellen Sie die Liquid-Vorlage, die Sie als Zuordnung für die JSON-Transformation verwenden. Sie können ein beliebiges Bearbeitungstool verwenden.

    Das Beispiel für die Transformation von JSON in JSON in diesem Artikel verwendet die folgende Liquid-Beispielvorlage:

    {%- assign deviceList = content.devices | Split: ', ' -%}
    
    {
       "fullName": "{{content.firstName | Append: ' ' | Append: content.lastName}}",
       "firstNameUpperCase": "{{content.firstName | Upcase}}",
       "phoneAreaCode": "{{content.phone | Slice: 1, 3}}",
       "devices" : [
          {%- for device in deviceList -%}
             {%- if forloop.Last == true -%}
             "{{device}}"
             {%- else -%}
             "{{device}}",
             {%- endif -%}
          {%- endfor -%}
       ]
    }
    
  2. Speichern Sie die Vorlage mithilfe der Dateierweiterung für die Liquid-Vorlage (.liquid). In diesem Beispiel wird SimpleJsonToJsonTemplate.liquid verwendet.

Schritt 2: Hochladen der Liquid-Vorlage

Nach dem Erstellen der Liquid-Vorlage müssen Sie die Vorlage nun basierend auf dem folgenden Szenario hochladen:

Hochladen der Vorlage in das Integrationskonto

  1. Melden Sie sich beim Azure-Portal mit den Anmeldeinformationen Ihres Azure-Kontos an.

  2. Geben Sie im Azure-Portal im Suchfeld Integrationskonten ein, und wählen Sie den Eintrag Integrationskonten aus.

    Screenshot showing the Azure portal search box with

  3. Suchen Sie Ihr Integrationskonto, und wählen Sie es aus.

    Screenshot showing integration accounts pane with integration account selected.

  4. Wählen Sie im Navigationsmenü des Integrationskontos unter Einstellungen die Option Zuordnungen aus.

    Screenshot showing integration account navigation menu with

  5. Wählen Sie im Bereich Zuordnungen die Option Hinzufügen aus. Geben Sie die folgenden Informationen zu Ihrer Zuordnung an:

    Eigenschaft Wert Beschreibung
    Name JsonToJsonTemplate Der Name für Ihre Zuordnung, der in diesem Beispiel „JsonToJsonTemplate“ lautet.
    Zuordnungstyp Liquid Der Typ Ihrer Zuordnung. Bei JSON-zu-JSON-Transformationen müssen Sie Liquid auswählen.
    Map SimpleJsonToJsonTemplate.liquid Eine vorhandene Liquid-Vorlagen- oder -Zuordnungsdatei, die für die Transformation verwendet wird. In diesem Beispiel heißt die Datei „SimpleJsonToJsonTemplate.liquid“. Sie können die Dateiauswahl verwenden, um diese Datei zu suchen. Informationen zu Größenbeschränkungen für Karten finden Sie unter Grenzwerte und Konfiguration.

    Screenshot showing

Hochladen der Vorlage in eine Standard-Logik-App

  1. Suchen Sie im Azure-Portal nach Ihrer Logik-App-Ressource, und öffnen Sie sie. Stellen Sie sicher, dass Sie sich auf Ressourcenebene und nicht auf Workflowebene befinden.

  2. Wählen Sie im Navigationsmenü Ihrer Logik-App-Ressource unter Artefakte die Option Zuordnungen aus.

  3. Wählen Sie auf der Symbolleiste des Bereichs Zuordnungen die Option Hinzufügen aus.

  4. Geben Sie im Bereich Zuordnung hinzufügen die folgenden Informationen zu Ihrer Vorlage an:

    Eigenschaft Wert Beschreibung
    Name JsonToJsonTemplate Der Name für Ihre Zuordnung, der in diesem Beispiel „JsonToJsonTemplate“ lautet.
    Zuordnungstyp Liquid Der Typ Ihrer Zuordnung. Bei JSON-zu-JSON-Transformationen müssen Sie Liquid auswählen.
    Map SimpleJsonToJsonTemplate.liquid Eine vorhandene Liquid-Vorlagen- oder -Zuordnungsdatei, die für die Transformation verwendet wird. In diesem Beispiel heißt die Datei „SimpleJsonToJsonTemplate.liquid“. Sie können die Dateiauswahl verwenden, um diese Datei zu suchen. Informationen zu Größenbeschränkungen für Karten finden Sie unter Grenzwerte und Konfiguration.
  5. Wenn Sie fertig sind, wählen Sie OK.

    Nachdem der Upload Ihrer Zuordnungsdatei abgeschlossen ist, wird die Zuordnung in der Liste Zuordnungen angezeigt. Auf der Seite Übersicht Ihres Integrationskontos wird unter Artefakte ebenfalls Ihre hochgeladene Zuordnung angezeigt.

Schritt 3: Hinzufügen der Liquid-Transformationsaktion

Die folgenden Schritte zeigen, wie Sie eine Liquid-Transformationsaktion für Verbrauchs- und Standard-Logik-App-Workflows hinzufügen.

  1. Öffnen Sie Ihren Logik-App-Workflow über das Azure-Portal im Workflow-Designer, wenn er nicht bereits geöffnet ist.

  2. Wenn Ihr Workflow keinen Trigger und keine anderen Aktionen enthält, die Ihr Workflow benötigt, fügen Sie diese Vorgänge zuerst hinzu. In Liquid-Vorgängen sind keine Trigger verfügbar.

    In diesem Beispiel wird der Anforderungstrigger mit dem Namen Beim Empfang einer HTTP-Anforderung verwendet.

  3. Wählen Sie im Workflow-Designer unter dem Schritt, in dem Sie die Liquid-Aktion hinzufügen möchten, die Option Neuer Schritt aus.

  4. Wählen Sie unter dem Suchfeld Vorgang auswählen die Option Alle aus. Geben Sie in das Suchfeld liquid ein.

  5. Wählen Sie in der Liste „Aktionen“ die gewünschte Liquid-Aktion aus.

    In diesem Beispiel wird die Aktion mit dem Namen Von JSON in JSON transformieren verwendet.

    Screenshot showing Consumption workflow designer with a Liquid action selected.

  6. Geben Sie in der Eigenschaft Inhalt der Aktion die JSON-Ausgabe des Triggers oder einer vorherigen Aktion an, die Sie transformieren möchten, indem Sie die folgenden Schritte ausführen:

    1. Klicken Sie in das Feld Inhalt, sodass die dynamische Inhaltsliste angezeigt wird.

    2. Wählen Sie in der dynamischen Inhaltsliste die JSON-Daten aus, die Sie transformieren möchten.

      Wählen Sie in diesem Beispiel in der dynamischen Inhaltsliste unter Beim Empfang einer HTTP-Anforderung das Token Text aus, das die Textinhaltsausgabe des Triggers darstellt.

      Screenshot showing Consumption workflow, Liquid action's

  7. Wählen Sie in der Liste Zuordnung Ihre Liquid-Vorlage aus.

    In diesem Beispiel wird die Vorlage mit dem Namen JsonToJsonTemplate verwendet.

    Screenshot showing Consumption workflow, Liquid action's

    Hinweis

    Wenn die Zuordnungsliste leer ist, ist entweder Ihre Logik-App-Ressource nicht mit Ihrem Integrationskonto verknüpft, oder Ihr Integrationskonto enthält keine Zuordnungsdateien.

    Wenn Sie fertig sind, sieht die Aktion dem folgenden Beispiel ähnlich:

    Screenshot showing Consumption workflow with finished

  8. Speichern Sie den Workflow. Wählen Sie auf der Symbolleiste des Designers Speichern aus.

Testen Ihres Workflows

  1. Senden Sie über Postman oder ein ähnliches Tool und mithilfe der POST-Methode einen Aufruf an die URL des Anforderungstriggers, die in der HTTP POST URL-Eigenschaft des Triggers angezeigt wird, und schließen Sie die JSON-Eingabe ein, die transformiert werden soll. Beispiel:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  2. Nachdem die Ausführung Ihres Workflows abgeschlossen ist, wechseln Sie zum Ausführungsverlauf des Workflows, und untersuchen Sie die Ein- und Ausgaben der Aktion Von JSON in JSON transformieren, z. B.:

    Screenshot showing example output.

Andere Liquid-Transformationen

Sie können Liquid verwenden, um andere Transformationen auszuführen, z. B.:

Transformieren von JSON in Text

Die folgende Liquid-Vorlage zeigt ein Beispiel für die Transformation von JSON in Text:

{{content.firstName | Append: ' ' | Append: content.lastName}}

Im folgenden Beispiel werden die Beispieleingaben und -ausgaben gezeigt:

Screenshot showing example output for JSON to text transformation.

Transformieren von XML in JSON

Die folgende Liquid-Vorlage zeigt ein Beispiel für die Transformation von XML in JSON:

[{% JSONArrayFor item in content -%}
      {{item}}
  {% endJSONArrayFor -%}]

Die JSONArrayFor-Schleife ist ein benutzerdefinierter Schleifenmechanismus für XML-Eingaben, damit sie JSON-Nutzlasten erstellen können, die ein nachgestelltes Komma vermeiden. Außerdem verwendet die where-Bedingung für diesen benutzerdefinierten Schleifenmechanismus den Namen des XML-Elements für Vergleiche, anstatt den Wert des Elements zu verwenden, wie andere Liquid-Filter. Weitere Informationen finden Sie unter Deep Dive on set-body Policy - Collections of Things.

Im folgenden Beispiel werden die Beispieleingaben und -ausgaben gezeigt:

Screenshot showing example output for XML to JSON transformation.

Transformieren von XML in Text

Die folgende Liquid-Vorlage zeigt ein Beispiel für die Transformation von XML in Text:

{{content.firstName | Append: ' ' | Append: content.lastName}}

Im folgenden Beispiel werden die Beispieleingaben und -ausgaben gezeigt:

Screenshot showing example output for XML to text transformation.

Überlegungen zu Liquid-Vorlagen

  • Liquid-Vorlagen folgen den Dateigrößenlimits für Zuordnungen in Azure Logic Apps.

  • Die Aktion Von JSON in JSON transformieren folgt der DotLiquid-Implementierung für Liquid. Diese Implementierung ist eine Portierung in das .NET Framework aus der Shopify-Implementierung für Liquid und unterscheidet sich in bestimmten Fällen.

    In der folgenden Liste werden die bekannten Unterschiede beschrieben:

    • Die Aktion Von JSON in JSON transformieren gibt nativ eine Zeichenfolge aus, die JSON, XML, HTML usw. enthalten kann. Die Liquid-Aktion gibt lediglich an, dass die erwartete Textausgabe aus der Liquid-Vorlage eine JSON-Zeichenfolge ist. Die Aktion weist ihre Logik-App an, Eingaben als JSON-Objekt zu analysieren, und wendet einen Wrapper an, damit Liquid die JSON-Struktur interpretieren kann. Nach der Transformation weist die Aktion Ihre Logik-App an, die Textausgabe von Liquid zurück in JSON zu analysieren.

      DotLiquid versteht JSON nicht nativ. Stellen Sie daher sicher, dass Sie den umgekehrten Schrägstrich (\) und alle anderen reservierten JSON-Zeichen mit Escapezeichen versehen.

    • Wenn Ihre Vorlage Liquid-Filter verwendet, stellen Sie sicher, dass Sie die DotLiquid- und C#-Benennungskonventionen einhalten, die normale Groß-/Kleinschreibung (wie in Sätzen) verwenden. Stellen Sie bei allen Liquid-Transformationen sicher, dass Filternamen in Ihrer Vorlage ebenfalls normale Groß-/Kleinschreibung verwenden. Andernfalls funktionieren die Filter nicht.

      Wenn Sie z. B. den replace-Filter verwenden, verwenden Sie Replace, nicht replace. Dieselbe Regel gilt, wenn Sie Beispiele bei DotLiquid Online ausprobieren. Weitere Informationen finden Sie unter Shopify Liquid-Filter und DotLiquid Liquid-Filter. Die Shopify-Spezifikation umfasst Beispiele für jeden Filter, sodass Sie zu Vergleichszwecken diese Beispiele unter DotLiquid – Online testen ausprobieren können.

    • Der json-Filter aus den Shopify-Erweiterungsfiltern ist zurzeit in DotLiquid nicht implementiert. In der Regel können Sie diesen Filter verwenden, um die Textausgabe für die JSON-Zeichenfolgenanalyse vorzubereiten, doch stattdessen müssen Sie den Replace-Filter verwenden.

    • Der Replace-Standardfilter in der DotLiquid-Implementierung verwendet den Abgleich regulärer Ausdrücke (RegEx), während die Shopify-Implementierung einen einfachen Zeichenfolgenabgleich verwendet. Beide Implementierungen scheinen identisch zu funktionieren, bis Sie ein für reguläre Ausdrücke reserviertes Zeichen oder ein Escapezeichen im match-Parameter verwenden.

      Um z. B. den für reguläre Ausdrücke reservierten umgekehrten Schrägstrich (\) mit Escapezeichen zu versehen, verwenden Sie | Replace: '\\', '\\', nicht | Replace: '\', '\\'. In diesen Beispielen wird gezeigt, wie sich der Replace-Filter anders verhält, wenn Sie versuchen, den umgekehrten Schrägstrich mit Escapezeichen zu versehen. Während diese Version erfolgreich funktioniert:

      { "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\\', '\\' | Replace: '"', '\"'}}"}

      Mit diesem Ergebnis:

      { "SampleText": "The quick brown fox \"jumped\" over the sleeping dog\\\\"}

      Schlägt diese Version fehl:

      { "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\', '\\' | Replace: '"', '\"'}}"}

      Mit diesem Fehler:

      { "SampleText": "Liquid error: parsing "\" - Illegal \ at end of pattern."}

      Weitere Informationen finden Sie unter Replace-Standardfilter verwendet Musterabgleich mit regulären Ausdrücken (RegEx).

    • Der Sort-Filter in der DotLiquid-Implementierung sortiert Elemente in einem Array oder einer Sammlung nach Eigenschaft, jedoch mit den folgenden Unterschieden:

Nächste Schritte