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:
- Provádění operací s daty v Azure Logic Apps
- Jazyk open source šablon Liquid
- Využití a standardní aplikace logiky
- Integrované konektory účtu integrace
- Přehled integrovaných konektorů pro Azure Logic Apps
- Přehled spravovaných konektorů nebo konektorů hostovaných v Azure pro Azure Logic Apps a spravované konektory hostované v Azure Logic Apps
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.
Nainstalujte nebo použijte nástroj, který může odesílat požadavky HTTP k otestování vašeho řešení, například:
- Visual Studio Code s rozšířením z Webu Visual Studio Marketplace
- PowerShell Invoke-RestMethod
- Microsoft Edge – nástroj konzoly sítě
- Bruno
- kudrna
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í potřebných funkcí zabezpečení, funguje offline nebo místně, nesynchronizuje vaše data do cloudu a nevyžaduje, abyste se přihlásili k online účtu. Tímto způsobem 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í.
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 -%} ] }
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:
Pokud pracujete na pracovním postupu aplikace logiky Consumption, nahrajte šablonu do svého účtu integrace.
Pokud pracujete na pracovním postupu standardní aplikace logiky, můžete šablonu nahrát do účtu integrace nebo šablonu nahrát do prostředku aplikace logiky.
Nahrání šablony do účtu integrace
Na webu Azure Portal se přihlaste pomocí svých přihlašovacích údajů k účtu Azure.
Do vyhledávacího pole webu Azure Portal zadejte účty integrace a vyberte Účty integrace.
Vyhledejte a vyberte svůj účet integrace.
V navigační nabídce účtu integrace v části Nastavení vyberte Mapy.
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 Kapalina 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.
Nahrání šablony do standardní aplikace logiky
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.
V navigační nabídce prostředku aplikace logiky v části Artefakty vyberte Mapy.
Na panelu nástrojů podokna Mapy vyberte Přidat.
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 Kapalina 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. Jakmile budete hotovi, vyberte tlačítko OK.
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.
Na webu Azure Portal otevřete pracovní postup aplikace logiky v návrháři, pokud ještě není otevřený.
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.
V návrháři pracovního postupu v kroku, do kterého chcete přidat akci Liquid, vyberte Nový krok.
Pod vyhledávacím polem Zvolit operaci vyberte Vše. Do vyhledávacího pole zadejte kapalinu.
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.
Ve vlastnosti Content akce zadejte výstup JSON z triggeru nebo předchozí akce, kterou chcete transformovat pomocí následujícího postupu.
Klikněte do pole Obsah , aby se zobrazil seznam dynamického obsahu.
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.
V seznamu Mapy vyberte šablonu Liquid.
Tento příklad pokračuje se šablonou s názvem JsonToJsonTemplate.
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:
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:
V triggeru požadavku vyhledejte vlastnost ADRESY URL HTTP POST a zkopírujte adresu URL.
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.Zahrňte vstup JSON pro transformaci, například:
{ "devices": "Surface, Mobile, Desktop computer, Monitors", "firstName": "Dean", "lastName": "Ledet", "phone": "(111)0001111" }
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:
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:
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:
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:
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žijteReplace
, nereplace
. 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ýstupuReplace
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í, jakReplace
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:Řídí se sort_natural chováním Shopify, nikoli chováním Shopify.
Seřadí se pouze v řetězci alfanumerickém pořadí. Další informace naleznete v tématu Číselné řazení.
Používá pořadí nerozlišující velká a malá a velká písmena. Další informace najdete v tématu Filtr řazení, který neodpovídá chování při dělení na velká a velká část ze specifikace Shopify.