JSON en XML transformeren met behulp van Liquid-sjablonen als toewijzingen in werkstromen met behulp van Azure Logic Apps

Van toepassing op: Azure Logic Apps (Verbruik + Standard)

Wanneer u eenvoudige JSON-transformaties wilt uitvoeren in uw werkstromen voor logische apps, kunt u ingebouwde gegevensbewerkingen gebruiken, zoals de actie Opstellen of JSON parseren. Voor sommige scenario's zijn echter mogelijk geavanceerde en complexe transformaties vereist die elementen bevatten, zoals iteraties, controlestromen en variabelen. Voor transformaties tussen JSON en JSON, JSON naar tekst, XML naar JSON of XML naar tekst kunt u een sjabloon maken die de vereiste toewijzing of transformatie beschrijft met behulp van de opensource-sjabloontaal Liquid. U kunt deze sjabloon selecteren wanneer u een ingebouwde Liquid-actie toevoegt aan uw werkstroom. U kunt Liquid-acties gebruiken in werkstromen voor logische apps met meerdere tenants en werkstromen voor logische apps met één tenant.

Hoewel er geen Liquid-triggers beschikbaar zijn, kunt u elke trigger of actie gebruiken om de bron-JSON- of XML-inhoud in uw werkstroom in te voeren. U kunt bijvoorbeeld een ingebouwde connectortrigger, een beheerde of door Azure gehoste connectortrigger gebruiken die beschikbaar is voor Azure Logic Apps of zelfs een andere app.

In dit artikel wordt beschreven hoe u de volgende taken uitvoert:

  • Maak een Liquid-sjabloon.
  • Upload de sjabloon naar uw integratieaccount voor werkstromen voor logische apps voor verbruik of naar de resource van de standaard logische app voor gebruik in een onderliggende werkstroom.
  • Voeg een Liquid-actie toe aan uw werkstroom.
  • Selecteer de sjabloon als de kaart die u wilt gebruiken.

Raadpleeg de volgende documentatie voor meer informatie:

Vereisten

  • Een Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.

  • De resource en werkstroom van uw logische app. Liquide bewerkingen hebben geen triggers beschikbaar, dus uw werkstroom moet minimaal een trigger bevatten. Raadpleeg de volgende documentatie voor meer informatie:

  • Op basis van of u werkt aan een werkstroom voor een verbruiks- of Standard-logische app, hebt u een integratieaccountresource nodig. Normaal gesproken hebt u deze resource nodig wanneer u artefacten wilt definiëren en opslaan voor gebruik in bedrijfsintegratie en B2B-werkstromen.

    Belangrijk

    Als u wilt samenwerken, moeten zowel uw integratieaccount als de resource van de logische app zich in hetzelfde Azure-abonnement en dezelfde Azure-regio bevinden.

    • Als u aan een werkstroom voor logische verbruiks-apps werkt, is voor uw integratieaccount een koppeling naar de resource van uw logische app vereist.

    • Als u aan een werkstroom voor een standaard logische app werkt, kunt u uw integratieaccount koppelen aan uw resource voor logische apps, kaarten rechtstreeks uploaden naar uw logische app-resource of beide, op basis van de volgende scenario's:

      • Als u al een integratieaccount hebt met de artefacten die u nodig hebt of wilt gebruiken, kunt u het integratieaccount koppelen aan meerdere resources van de logische standaard-app waar u de artefacten wilt gebruiken. Op die manier hoeft u geen kaarten te uploaden naar elke afzonderlijke logische app. Zie Uw logische app-resource koppelen aan uw integratieaccount voor meer informatie.

      • Met de ingebouwde Liquid-connector kunt u een kaart selecteren die u eerder hebt geüpload naar uw logische app-resource of naar een gekoppeld integratieaccount, maar niet beide. U kunt deze artefacten vervolgens gebruiken voor alle onderliggende werkstromen binnen dezelfde logische app-resource.

      Als u dus geen integratieaccount hebt of nodig hebt, kunt u de optie uploaden gebruiken. Anders kunt u de koppelingsoptie gebruiken. In beide gevallen kunt u deze artefacten gebruiken voor alle onderliggende werkstromen binnen dezelfde logische app-resource.

  • Basiskennis van de liquid-sjabloontaal. Azure Logic Apps maakt gebruik van DotLiquid 2.0.361.

    Notitie

    De Liquid-actie genaamd Transform JSON naar JSON volgt de DotLiquid-implementatie voor Liquid, die verschilt in specifieke gevallen van de Shopify-implementatie voor Liquid. Zie Overwegingen voor Liquid-sjablonen voor meer informatie.

Stap 1: De sjabloon maken

Voordat u een Liquid-transformatie in uw werkstroom voor logische apps kunt uitvoeren, moet u eerst een Liquid-sjabloon maken waarmee de gewenste toewijzing wordt gedefinieerd.

  1. Maak de Liquid-sjabloon die u gebruikt als een kaart voor de JSON-transformatie. U kunt elk gewenst bewerkingsprogramma gebruiken.

    In het voorbeeld van JSON-naar-JSON-transformatie in dit artikel wordt de volgende liquid-voorbeeldsjabloon gebruikt:

    {%- 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. Sla de sjabloon op met behulp van de bestandsextensie Liquid-sjabloon (.liquid). In dit voorbeeld wordt SimpleJsonToJsonTemplate.liquid gebruikt.

Stap 2: Liquid-sjabloon uploaden

Nadat u uw Liquid-sjabloon hebt gemaakt, moet u de sjabloon nu uploaden op basis van het volgende scenario:

Sjabloon uploaden naar integratieaccount

  1. Meld u in Azure Portal aan met uw Azure-accountreferenties.

  2. Voer in het zoekvak van Azure Portal integratieaccounts in en selecteer Integratieaccounts.

    Screenshot showing the Azure portal search box with

  3. Zoek en selecteer uw integratieaccount.

    Screenshot showing integration accounts pane with integration account selected.

  4. Selecteer Kaarten in het navigatiemenu van het integratieaccount onder Instellingen.

    Screenshot showing integration account navigation menu with

  5. Selecteer Toevoegen in het deelvenster Kaarten. Geef de volgende informatie op over uw kaart:

    Eigenschappen Weergegeven als Beschrijving
    Naam JsonToJsonTemplate De naam van uw kaart, die 'JsonToJsonTemplate' is in dit voorbeeld
    Kaarttype Vloeistof Het type voor uw kaart. Voor JSON-naar-JSON-transformatie moet u Liquid selecteren.
    Map SimpleJsonToJsonTemplate.liquid Een bestaande Liquid-sjabloon of toewijzingsbestand dat moet worden gebruikt voor transformatie, dat in dit voorbeeld SimpleJsonToJsonTemplate.liquid is. Als u dit bestand wilt vinden, kunt u de bestandskiezer gebruiken. Zie Limieten en configuratie voor kaartgroottelimieten.

    Screenshot showing

Sjabloon uploaden naar een standaard logische app

  1. Zoek en open uw logische app-resource in Azure Portal. Zorg ervoor dat u zich op resourceniveau bevindt, niet het werkstroomniveau.

  2. Selecteer in het navigatiemenu van uw logische app-resource onder Artefacten Kaarten.

  3. Selecteer Toevoegen op de werkbalk van het Kaarten deelvenster.

  4. Geef in het deelvenster Kaart toevoegen de volgende informatie op over uw sjabloon:

    Eigenschappen Weergegeven als Beschrijving
    Naam JsonToJsonTemplate De naam van uw kaart, die 'JsonToJsonTemplate' is in dit voorbeeld
    Kaarttype Vloeistof Het type voor uw kaart. Voor JSON-naar-JSON-transformatie moet u Liquid selecteren.
    Map SimpleJsonToJsonTemplate.liquid Een bestaande Liquid-sjabloon of toewijzingsbestand dat moet worden gebruikt voor transformatie, dat in dit voorbeeld SimpleJsonToJsonTemplate.liquid is. Als u dit bestand wilt vinden, kunt u de bestandskiezer gebruiken. Zie Limieten en configuratie voor kaartgroottelimieten.
  5. Als u gereed bent, selecteert u OK.

    Nadat het kaartbestand is geüpload, wordt de kaart weergegeven in de Kaarten lijst. Op de overzichtspagina van uw integratieaccount, onder Artefacten, wordt de geüploade kaart ook weergegeven.

Stap 3: De actie Liquid-transformatie toevoegen

In de volgende stappen ziet u hoe u een liquide transformatieactie toevoegt voor werkstromen voor verbruiks- en standaardlogica-apps.

  1. Open in Azure Portal uw werkstroom voor logische apps in de ontwerpfunctie, als deze nog niet is geopend.

  2. Als uw werkstroom geen trigger of andere acties heeft die uw werkstroom nodig heeft, voegt u deze bewerkingen eerst toe. Liquide bewerkingen hebben geen triggers beschikbaar.

    In dit voorbeeld wordt de aanvraagtrigger voortgezet met de naam Wanneer een HTTP-aanvraag wordt ontvangen.

  3. Selecteer in de werkstroomontwerper onder de stap waar u de actie Liquid wilt toevoegen de optie Nieuwe stap.

  4. Selecteer onder het zoekvak Kies een bewerking de optie Alle. Voer in het zoekvak vloeistof in.

  5. Selecteer in de lijst met acties de actie Liquid die u wilt gebruiken.

    In dit voorbeeld wordt de actie JSON transformeren naar JSON voortgezet.

    Screenshot showing Consumption workflow designer with a Liquid action selected.

  6. Geef in de eigenschap Inhoud van de actie de JSON-uitvoer op van de trigger of een vorige actie die u wilt transformeren door deze stappen uit te voeren.

    1. Klik in het vak Inhoud , zodat de lijst met dynamische inhoud wordt weergegeven.

    2. Selecteer in de lijst met dynamische inhoud de JSON-gegevens die u wilt transformeren.

      Voor dit voorbeeld selecteert u in de lijst met dynamische inhoud onder Wanneer een HTTP-aanvraag wordt ontvangen het hoofdteksttoken , dat de uitvoer van de hoofdtekst van de trigger vertegenwoordigt.

      Screenshot showing Consumption workflow, Liquid action's

  7. Selecteer uw Liquid-sjabloon in de lijst Kaart .

    In dit voorbeeld wordt de sjabloon JsonToJsonTemplate gebruikt.

    Screenshot showing Consumption workflow, Liquid action's

    Notitie

    Als de lijst met kaarten leeg is, is uw logische app-resource niet gekoppeld aan uw integratieaccount of bevat uw integratieaccount geen kaartbestanden.

    Wanneer u klaar bent, ziet de actie eruit zoals in het volgende voorbeeld:

    Screenshot showing Consumption workflow with finished

  8. Sla uw werkstroom op. Selecteer in de werkbalk van de ontwerper Opslaan.

Uw werkstroom testen

  1. Door Postman of een vergelijkbaar hulpprogramma en de POST methode te gebruiken, verzendt u een aanroep naar de URL van de aanvraagtrigger, die wordt weergegeven in de HTTP POST-URL-eigenschap van de aanvraagtrigger, en neemt u de JSON-invoer op die u wilt transformeren, bijvoorbeeld:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  2. Nadat de werkstroom is uitgevoerd, gaat u naar de uitvoeringsgeschiedenis van de werkstroom en bekijkt u de invoer en uitvoer van de transformatie-JSON-actie naar de invoer en uitvoer van de JSON-actie , bijvoorbeeld:

    Screenshot showing example output.

Andere liquide transformaties

U kunt Liquid gebruiken om andere transformaties uit te voeren, bijvoorbeeld:

JSON transformeren naar tekst

In de volgende Liquid-sjabloon ziet u een voorbeeldtransformatie voor JSON-naar-tekst:

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

In het volgende voorbeeld ziet u de voorbeeldinvoer en uitvoer:

Screenshot showing example output for JSON to text transformation.

XML transformeren naar JSON

In de volgende Liquid-sjabloon ziet u een voorbeeldtransformatie voor XML naar JSON:

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

De JSONArrayFor lus is een aangepast lusmechanisme voor XML-invoer, zodat u JSON-nettoladingen kunt maken die een volgkomma voorkomen. where De voorwaarde voor dit aangepaste lusmechanisme maakt ook gebruik van de naam van het XML-element voor vergelijking, in plaats van de waarde van het element zoals andere Liquid-filters. Zie Deep Dive over set-body Policy - Verzamelingen van dingen voor meer informatie.

In het volgende voorbeeld ziet u de voorbeeldinvoer en uitvoer:

Screenshot showing example output for XML to JSON transformation.

XML transformeren naar tekst

In de volgende Liquid-sjabloon ziet u een voorbeeldtransformatie voor XML-naar-tekst:

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

In het volgende voorbeeld ziet u de voorbeeldinvoer en uitvoer:

Screenshot showing example output for XML to text transformation.

Overwegingen voor liquide sjablonen

  • Liquid-sjablonen volgen de limieten voor de bestandsgrootte voor kaarten in Azure Logic Apps.

  • De actie JSON transformeren naar JSON volgt de DotLiquid-implementatie voor Liquid. Deze implementatie is een poort naar het .NET Framework van de Shopify-implementatie voor Liquid en verschilt in specifieke gevallen.

    In de volgende lijst worden de bekende verschillen beschreven:

    • Met de actie JSON transformeren naar JSON wordt een tekenreeks uitgevoerd, die JSON, XML, HTML, enzovoort kan bevatten. De actie Liquid geeft alleen aan dat de verwachte tekstuitvoer van de Liquid-sjabloon een JSON-tekenreeks is. Met de actie wordt uw logische app geïnstrueerd om invoer als een JSON-object te parseren en een wrapper toe te passen, zodat Liquid de JSON-structuur kan interpreteren. Na de transformatie geeft de actie uw logische app de instructie om de tekstuitvoer van Liquid terug naar JSON te parseren.

      DotLiquid begrijpt JSON niet, dus zorg ervoor dat u het backslash-teken (\) en andere gereserveerde JSON-tekens escapet.

    • Als uw sjabloon gebruikmaakt van Liquid-filters, moet u ervoor zorgen dat u de naamconventies dotLiquid en C# volgt, waarbij zinnen worden gebruikt. Voor alle Liquid-transformaties moet u ervoor zorgen dat filternamen in uw sjabloon ook zinsbehuizing gebruiken. Anders werken de filters niet.

      Als u bijvoorbeeld het replace filter gebruikt, gebruikt Replaceu , niet replace. Dezelfde regel is van toepassing als u online voorbeelden van DotLiquid probeert. Zie Shopify Liquid-filters en DotLiquid Liquid-filters voor meer informatie. De Shopify-specificatie bevat voorbeelden voor elk filter, dus voor vergelijking kunt u deze voorbeelden proberen op DotLiquid - Online proberen.

    • Het json filter van de Shopify-extensiefilters is momenteel niet geïmplementeerd in DotLiquid. Normaal gesproken kunt u dit filter gebruiken om tekstuitvoer voor te bereiden voor JSON-tekenreeksparsering, maar in plaats daarvan moet u het Replace filter gebruiken.

    • Het standaardfilter Replace in de DotLiquid-implementatie maakt gebruik van reguliere expressies (RegEx) matching, terwijl de Shopify-implementatie eenvoudige tekenreekskoppeling gebruikt. Beide implementaties lijken op dezelfde manier te werken totdat u een gereserveerd regEx-teken of een escape-teken in de overeenkomstparameter gebruikt.

      Als u bijvoorbeeld wilt ontsnappen aan het escapeteken regEx-gereserveerde backslash (\), gebruikt | Replace: '\\', '\\'u en niet | Replace: '\', '\\'. In deze voorbeelden ziet u hoe het Replace filter zich anders gedraagt wanneer u het backslash-teken probeert te ontsnappen. Hoewel deze versie met succes werkt:

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

      Met dit resultaat:

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

      Deze versie mislukt:

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

      Met deze fout:

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

      Zie Standaardfilter vervangen voor meer informatie over regex-patroonkoppeling....

    • Het Sort filter in de DotLiquid-implementatie sorteert items in een matrix of verzameling op eigenschap, maar met deze verschillen:

Volgende stappen