Transformace JSON a XML pomocí šablon Liquid jako map v pracovních postupech pomocí Azure Logic Apps

Platí pro: Azure Logic Apps (Consumption + Standard)

Pokud chcete provádět základní transformace JSON v pracovních postupech aplikace logiky, můžete použít předdefinované operace s daty, jako je akce Vytvořit nebo Parsovat akci JSON . Některé scénáře ale můžou vyžadovat pokročilé a složité transformace, které zahrnují prvky, jako jsou iterace, toky řízení a proměnné. V případě transformací mezi JSON a JSON na text, XML do FORMÁTU JSON nebo XML na text můžete vytvořit šablonu popisující požadované mapování nebo transformaci pomocí opensourcového jazyka šablon Liquid. Tuto šablonu můžete vybrat, když do pracovního postupu přidáte integrovanou akci Liquid . Akce Liquid můžete použít v pracovních postupech víceklientských aplikací logiky Consumption a pracovních postupech aplikací logiky standardu s jedním tenantem.

I když nejsou k dispozici žádné aktivační události Liquid , můžete k podávání zdrojového obsahu JSON nebo XML do pracovního postupu použít libovolnou aktivační událost nebo akci. Můžete například použít integrovaný trigger konektoru, spravovaný trigger konektoru hostovaný v Azure, který je k dispozici pro Azure Logic Apps nebo dokonce jinou aplikaci.

Tento článek ukazuje, jak provést následující úlohy:

  • Vytvořte šablonu Liquid.
  • Nahrajte šablonu do svého účtu integrace pro pracovní postupy aplikace logiky Consumption nebo do prostředku standardní aplikace logiky pro použití v jakémkoli podřízeném pracovním postupu.
  • Přidejte do pracovního postupu akci Liquid.
  • Vyberte šablonu jako mapu, kterou chcete použít.

Další informace najdete v následující dokumentaci:

Požadavky

  • Účet a předplatné Azure. Pokud předplatné nemáte, zaregistrujte si bezplatný účet Azure.

  • Prostředek a pracovní postup aplikace logiky Operace Liquid nemají k dispozici žádné aktivační události, takže váš pracovní postup musí obsahovat aktivační událost minimálně. Další informace najdete v následující dokumentaci:

  • Na základě toho, jestli pracujete na pracovním postupu aplikace logiky Consumption nebo Standard, budete potřebovat prostředek účtu integrace. Tento prostředek obvykle potřebujete, když chcete definovat a ukládat artefakty pro použití v podnikových integracích a pracovních postupech B2B.

    Důležité

    Abyste mohli spolupracovat, musí váš účet integrace i prostředek aplikace logiky existovat ve stejném předplatném Azure a v oblasti Azure.

    • Pokud pracujete na pracovním postupu aplikace logiky Consumption, váš účet integrace vyžaduje odkaz na prostředek aplikace logiky.

    • Pokud pracujete na pracovním postupu standardní aplikace logiky, můžete svůj účet integrace propojit s prostředkem aplikace logiky, nahrát mapy přímo do prostředku aplikace logiky nebo obojí na základě následujících scénářů:

      • Pokud už máte účet integrace s artefakty, které potřebujete nebo chcete použít, můžete propojit účet integrace s několika prostředky standardní aplikace logiky, ve kterých chcete artefakty používat. Díky tomu nemusíte nahrávat mapy do každé jednotlivé aplikace logiky. Další informace najdete v tématu Propojení prostředku aplikace logiky s účtem integrace.

      • Integrovaný konektor Liquid umožňuje vybrat mapu, kterou jste předtím nahráli do prostředku aplikace logiky nebo do propojeného účtu integrace, ale ne do obou. Tyto artefakty pak můžete použít napříč všemi podřízenými pracovními postupy v rámci stejného prostředku aplikace logiky.

      Pokud tedy účet integrace nemáte nebo potřebujete, můžete použít možnost nahrávání. V opačném případě můžete použít možnost propojení. V obou směrech můžete tyto artefakty použít napříč všemi podřízenými pracovními postupy v rámci stejného prostředku aplikace logiky.

  • Základní znalost jazyka šablon Liquid Azure Logic Apps používá DotLiquid 2.0.361.

    Poznámka:

    Akce Liquid s názvem Transform JSON na JSON se řídí implementací DotLiquid pro Liquid, která se liší v konkrétních případech od implementace Shopify pro Liquid. Další informace najdete v tématu Důležité informace o šablonách Liquid.

Krok 1: Vytvoření šablony

Před provedením transformace Liquid v pracovním postupu aplikace logiky musíte nejprve vytvořit šablonu Liquid, která definuje požadované mapování.

  1. Vytvořte šablonu Liquid, kterou použijete jako mapu transformace JSON. Můžete použít libovolný nástroj pro úpravy, který chcete použít.

    Příklad transformace JSON na JSON v tomto článku používá následující ukázkovou šablonu Liquid:

    {%- 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. Uložte šablonu pomocí přípony souboru Liquid (.liquid). V tomto příkladu se používá SimpleJsonToJsonTemplate.liquid.

Krok 2: Nahrání šablony Liquid

Po vytvoření šablony Liquid teď musíte šablonu nahrát na základě následujícího scénáře:

Nahrání šablony do účtu integrace

  1. Na webu Azure Portal se přihlaste pomocí svých přihlašovacích údajů k účtu Azure.

  2. Do vyhledávacího pole webu Azure Portal zadejte účty integrace a vyberte Účty integrace.

    Screenshot showing the Azure portal search box with

  3. Vyhledejte a vyberte svůj účet integrace.

    Screenshot showing integration accounts pane with integration account selected.

  4. V navigační nabídce účtu integrace v části Nastavení vyberte Mapy.

    Screenshot showing integration account navigation menu with

  5. V podokně Mapy vyberte Přidat. Zadejte následující informace o mapě:

    Vlastnost Hodnota Popis
    Jméno JsonToJsonTemplate Název mapy, což je JsonToJsonTemplate v tomto příkladu
    Typ mapy Kapaliny Typ mapy. V případě transformace JSON na JSON musíte vybrat Liquid.
    Map SimpleJsonToJsonTemplate.liquid Existující šablona Liquid nebo mapovací soubor, který se má použít pro transformaci, což je "SimpleJsonToJsonTemplate.liquid" v tomto příkladu. K vyhledání tohoto souboru můžete použít nástroj pro výběr souboru. Omezení velikosti mapy najdete v tématu Omezení a konfigurace.

    Screenshot showing

Nahrání šablony do standardní aplikace logiky

  1. Na webu Azure Portal vyhledejte a otevřete prostředek aplikace logiky. Ujistěte se, že jste na úrovni prostředku, ne na úrovni pracovního postupu.

  2. V navigační nabídce prostředku aplikace logiky v části Artefakty vyberte Mapy.

  3. Na panelu nástrojů podokna Mapy vyberte Přidat.

  4. V podokně Přidat mapu zadejte následující informace o šabloně:

    Vlastnost Hodnota Popis
    Jméno JsonToJsonTemplate Název mapy, což je JsonToJsonTemplate v tomto příkladu
    Typ mapy Kapaliny Typ mapy. V případě transformace JSON na JSON musíte vybrat Liquid.
    Map SimpleJsonToJsonTemplate.liquid Existující šablona Liquid nebo mapovací soubor, který se má použít pro transformaci, což je "SimpleJsonToJsonTemplate.liquid" v tomto příkladu. K vyhledání tohoto souboru můžete použít nástroj pro výběr souboru. Omezení velikosti mapy najdete v tématu Omezení a konfigurace.
  5. Jakmile budete hotovi, vyberte tlačítko OK.

    Po nahrání souboru mapy se mapa zobrazí v seznamu Mapy. Na stránce Přehled vašeho účtu integrace se v části Artefakty zobrazí také nahraná mapa.

Krok 3: Přidání akce transformace Liquid

Následující kroky ukazují, jak přidat akci transformace Liquid pro pracovní postupy aplikace logiky Consumption a Standard.

  1. Na webu Azure Portal otevřete pracovní postup aplikace logiky v návrháři, pokud ještě není otevřený.

  2. Pokud váš pracovní postup nemá aktivační událost nebo žádné jiné akce, které váš pracovní postup potřebuje, přidejte nejprve tyto operace. Operace Liquid nemají k dispozici žádné aktivační události.

    Tento příklad pokračuje triggerem požadavku s názvem Při přijetí požadavku HTTP.

  3. V návrháři pracovního postupu v kroku, do kterého chcete přidat akci Liquid, vyberte Nový krok.

  4. Pod vyhledávacím polem Zvolit operaci vyberte Vše. Do vyhledávacího pole zadejte kapalinu.

  5. V seznamu akcí vyberte akci Liquid, kterou chcete použít.

    Tento příklad pokračuje v používání akce s názvem Transform JSON na JSON.

    Screenshot showing Consumption workflow designer with a Liquid action selected.

  6. Ve vlastnosti Content akce zadejte výstup JSON z triggeru nebo předchozí akce, kterou chcete transformovat pomocí následujícího postupu.

    1. Klikněte do pole Obsah , aby se zobrazil seznam dynamického obsahu.

    2. V seznamu dynamického obsahu vyberte data JSON, která chcete transformovat.

      V tomto příkladu v seznamu dynamického obsahu v části Při přijetí požadavku HTTP vyberte token Body , který představuje výstup základního obsahu z triggeru.

      Screenshot showing Consumption workflow, Liquid action's

  7. V seznamu Mapy vyberte šablonu Liquid.

    Tento příklad pokračuje se šablonou s názvem JsonToJsonTemplate.

    Screenshot showing Consumption workflow, Liquid action's

    Poznámka:

    Pokud je seznam map prázdný, prostředek aplikace logiky není propojený s vaším účtem integrace nebo váš účet integrace neobsahuje žádné mapové soubory.

    Po dokončení bude akce vypadat podobně jako v následujícím příkladu:

    Screenshot showing Consumption workflow with finished

  8. Uložte pracovní postup. Na panelu nástrojů návrháře vyberte Uložit.

Otestování pracovního postupu

  1. Pomocí nástroje Postman nebo podobného POST nástroje a metody odešlete volání na adresu URL triggeru požadavku, která se zobrazí ve vlastnosti ADRESY URL HTTP POST triggeru požadavku, a vložte vstup JSON, který se má transformovat, například:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  2. Po dokončení běhu pracovního postupu přejděte do historie spuštění pracovního postupu a prozkoumejte vstupy a výstupy akce JSON transformace na json, například:

    Screenshot showing example output.

Další transformace Liquid

Liquid můžete použít k provádění dalších transformací, například:

Transformace JSON na text

Následující šablona Liquid ukazuje ukázkovou transformaci kódu JSON na text:

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

Následující příklad ukazuje ukázkové vstupy a výstupy:

Screenshot showing example output for JSON to text transformation.

Transformace XML na JSON

Následující šablona Liquid ukazuje příklad transformace XML na JSON:

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

Smyčka JSONArrayFor je vlastní mechanismus smyčky pro vstup XML, abyste mohli vytvářet datové části JSON, které se vyhýbají koncovému čárkám. where Podmínka pro tento vlastní mechanismus smyčky také používá název elementu XML pro porovnání, nikoli hodnotu elementu jako jiné filtry Liquid. Další informace najdete v tématu Hloubkové informace o zásadách nastavení – kolekce věcí.

Následující příklad ukazuje ukázkové vstupy a výstupy:

Screenshot showing example output for XML to JSON transformation.

Transformace XML na text

Následující šablona Liquid ukazuje příklad transformace XML na text:

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

Následující příklad ukazuje ukázkové vstupy a výstupy:

Screenshot showing example output for XML to text transformation.

Důležité informace o šablonách Liquid

  • Šablony Liquid se řídí omezeními velikosti souborů pro mapy v Azure Logic Apps.

  • Akce TransformOVAT JSON na JSON se řídí implementací DotLiquid pro Liquid. Tato implementace je portem rozhraní .NET Framework z implementace Shopify pro Liquid a liší se v konkrétních případech.

    Následující seznam popisuje známé rozdíly:

    • Akce Transformovat JSON na JSON nativně vypíše řetězec, který může obsahovat JSON, XML, HTML atd. Akce Liquid označuje, že očekávaný textový výstup ze šablony Liquid je řetězec JSON. Akce dává vaší aplikaci logiky pokyn, aby parsoval vstup jako objekt JSON a použil obálku, aby liquid mohl interpretovat strukturu JSON. Po transformaci akce dá vaší aplikaci logiky pokyn, aby parsoval textový výstup z Liquid zpět do FORMÁTU JSON.

      DotLiquid nativně nerozumí formátu JSON, proto se ujistěte, že uchytáte znak zpětného lomítka (\) a všechny další rezervované znaky JSON.

    • Pokud vaše šablona používá filtry Liquid, ujistěte se, že dodržujete zásady vytváření názvů v jazyce C#, které používají písmena vět. U všech transformací Liquid se ujistěte, že názvy filtrů v šabloně používají také velká písmena vět. Jinak filtry nebudou fungovat.

      Pokud například použijete replace filtr, použijte Replace, ne replace. Stejné pravidlo platí, pokud si vyzkoušíte příklady na webu DotLiquid online. Další informace naleznete v tématu Shopify Liquid filtry a DotLiquid Liquid filtry. Specifikace Shopify obsahuje příklady pro každý filtr, takže pro porovnání můžete vyzkoušet tyto příklady na DotLiquid - Vyzkoušet online.

    • Filtr json z filtrů rozšíření Shopify se v současné době neimplementuje ve službě DotLiquid. Tento filtr obvykle můžete použít k přípravě textového výstupu Replace pro analýzu řetězců JSON, ale místo toho musíte použít filtr.

    • Standardní Replace filtr v implementaci DotLiquid používá porovnávání regulárního výrazu (RegEx), zatímco implementace Shopify používá jednoduché porovnávání řetězců. Obě implementace se zdá, že fungují stejným způsobem, dokud v parametru shody nepoužijete vyhrazený znak RegEx nebo řídicí znak.

      Chcete-li například utéct řídicí znak zpětného lomítka\ () rezervovaného regulárního výrazu, použijte | Replace: '\\', '\\'a ne | Replace: '\', '\\'. Tyto příklady ukazují, jak Replace se filtr chová jinak, když se pokusíte ukazovat znak zpětného lomítka. I když tato verze úspěšně funguje:

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

      S tímto výsledkem:

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

      Tato verze selže:

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

      S touto chybou:

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

      Další informace naleznete v tématu Nahrazení standardního filtru používá porovnávání vzorů RegEx....

    • Filtr Sort v implementaci DotLiquid seřadí položky v poli nebo kolekci podle vlastnosti, ale s těmito rozdíly:

Další kroky