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ě.

    Pokud nemáte prostředek a pracovní postup aplikace logiky, vytvořte je teď podle kroků pro aplikaci logiky, kterou chcete použít:

  • Prostředek integračního účtu. 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.

    • Pro pracovní postup aplikace logiky Consumption vyžaduje váš účet integrace odkaz na prostředek aplikace logiky.

    • Pro pracovní postup standardní aplikace logiky můžete propojit svůj účet integrace 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.

      • Vestavěný 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 nikoliv do obou současně. 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.

  • Nainstalujte nebo použijte nástroj, který může odesílat požadavky HTTP k otestování vašeho řešení, například:

    Upozornění

    V situacích, kdy máte citlivá data, jako jsou přihlašovací údaje, tajné kódy, přístupové tokeny, klíče rozhraní API a další podobné informace, nezapomeňte použít nástroj, který chrání vaše data pomocí nezbytných funkcí zabezpečení. Nástroj by měl fungovat offline nebo místně a nevyžaduje přihlášení k online účtu nebo synchronizaci dat do cloudu. Při použití nástroje s těmito charakteristikami snížíte riziko zveřejnění citlivých dat veřejnosti.

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-to-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). Tento příklad se nazý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.

    Snímek obrazovky s vyhledávacím polem webu Azure Portal se zadanými účty integrace a vybranými účty integrace

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

    Snímek obrazovky s podoknem účtů integrace a vybraným účtem integrace

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

    Snímek obrazovky ukazující navigační nabídku účtu integrace s vybranou položkou Mapy

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

    Vlastnost Hodnota Popis
    Jméno JsonToJsonTemplate Název vaší mapy, což je JsonToJsonTemplate v tomto příkladu
    Typ mapy Kapalina Typ mapy. V případě transformace JSON na JSON musíte vybrat Liquid.
    Mapa SimpleJsonToJsonTemplate.liquid Existující šablona Liquid nebo mapovací soubor, který se použije 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.

    Snímek obrazovky znázorňující podokno Přidat mapu s nahranou novou šablonou

Nahrání šablony do standardní aplikace logiky

  1. V Azure Portal otevřete svůj prostředek Standard pro logické aplikace. Ujistěte se, že jste na úrovni prostředku, ne na úrovni pracovního postupu.

  2. V nabídce postranního panelu zdroje, v části Artefakty, vyberte Mapy.

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

  4. V podokně Přidat mapu přetáhněte soubor do pole pro nahrání nebo vyberte Vyhledat soubory.

    Po dokončení nahrává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 prostředek aplikace logiky Consumption.

  2. V nabídce bočního panelu prostředku v části Vývojové nástroje vyberte možnost návrháře, abyste otevřeli svůj pracovní postup.

  3. 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 pomocí spouštěče požadavku s názvem Při přijetí požadavku HTTP.

  4. Pod triggerem vyberte Přidat akci. 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.

    Snímek obrazovky znázorňující návrháře pracovního postupu Consumption s vybranou akcí Liquid

  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. Vyberte uvnitř pole Obsah , ve kterém se zobrazí možnosti otevření seznamu dynamického obsahu (ikona blesku) nebo editoru výrazů (ikona funkce). Výběrem ikony blesku otevřete 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.

      Snímek obrazovky zobrazující pracovní postup Consumption, vlastnost Obsah akce Liquid, otevřený seznam dynamického obsahu a vybraný token Body.

  7. V seznamu Mapy vyberte šablonu Liquid.

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

    Snímek obrazovky znázorňující pracovní postup Consumption, vlastnost Map akce Liquid a vybranou šablonu

    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.

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

Otestování pracovního postupu

Pokud chcete aktivovat pracovní postup, postupujte takto:

  1. Ve spouštěči Request vyhledejte vlastnost URL HTTP a zkopírujte URL.

  2. Otevřete nástroj požadavku HTTP a pomocí jeho pokynů odešlete požadavek HTTP na zkopírovanou adresu URL, včetně metody, kterou trigger požadavku očekává.

    Tento příklad používá metodu POST s adresou URL.

  3. Zahrňte vstup JSON pro transformaci, například:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  4. 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:

    Snímek obrazovky s ukázkovým výstupem

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:

Snímek obrazovky znázorňující příklad výstupu pro transformaci JSON na text

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:

Snímek obrazovky znázorňující příklad výstupu transformace XML na JSON

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:

Snímek obrazovky znázorňující příklad výstupu transformace XML na text

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 nefungují.

      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: