Udostępnij za pośrednictwem


Przekształcanie kodu JSON i XML przy użyciu szablonów Liquid jako map w przepływach pracy przy użyciu usługi Azure Logic Apps

Dotyczy: Azure Logic Apps (Zużycie + Standardowa)

Jeśli chcesz wykonać podstawowe przekształcenia JSON w przepływach pracy aplikacji logiki, możesz użyć wbudowanych operacji danych, takich jak akcja Redaguj lub Przeanalizuj akcję JSON . Jednak niektóre scenariusze mogą wymagać zaawansowanych i złożonych przekształceń, które obejmują elementy, takie jak iteracje, przepływy sterowania i zmienne. W przypadku przekształceń między formatami JSON i JSON, JSON na tekst, XML i JSON lub XML do tekstu można utworzyć szablon opisujący wymagane mapowanie lub transformację przy użyciu języka szablonu open source Liquid. Ten szablon można wybrać podczas dodawania wbudowanej akcji Liquid do przepływu pracy. Możesz użyć akcji Liquid w wielodostępnych przepływach pracy aplikacji logiki zużycie i przepływach pracy aplikacji logiki w warstwie Standardowa z jedną dzierżawą.

Chociaż nie są dostępne żadne wyzwalacze Liquid , możesz użyć dowolnego wyzwalacza lub akcji, aby podawać źródłowy kod JSON lub zawartość XML do przepływu pracy. Można na przykład użyć wbudowanego wyzwalacza łącznika, wyzwalacza łącznika zarządzanego lub hostowanego na platformie Azure dostępnego dla usługi Azure Logic Apps, a nawet innej aplikacji.

W tym artykule pokazano, jak wykonać następujące zadania:

  • Utwórz szablon Liquid.
  • Przekaż szablon do konta integracji dla przepływów pracy aplikacji logiki Zużycie lub do zasobu standardowej aplikacji logiki do użycia w dowolnym podrzędnym przepływie pracy.
  • Dodaj akcję Liquid do przepływu pracy.
  • Wybierz szablon jako mapę, której chcesz użyć.

Aby uzyskać więcej informacji, zapoznaj się z następującą dokumentacją:

Wymagania wstępne

  • Konto i subskrypcja platformy Azure. Jeśli nie masz subskrypcji, zarejestruj się w celu założenia bezpłatnego konta platformy Azure.

  • Zasób aplikacji logiki i przepływ pracy. Operacje liquid nie mają dostępnych żadnych wyzwalaczy, więc przepływ pracy musi zawierać co najmniej wyzwalacz. Aby uzyskać więcej informacji, zapoznaj się z następującą dokumentacją:

  • W zależności od tego, czy pracujesz nad przepływem pracy aplikacji logiki Zużycie, czy Standardowa, potrzebny będzie zasób konta integracji. Zazwyczaj ten zasób jest potrzebny, gdy chcesz zdefiniować i przechowywać artefakty do użycia w przepływach pracy integracji przedsiębiorstwa i B2B.

    Ważne

    Aby współpracować, zarówno konto integracji, jak i zasób aplikacji logiki muszą istnieć w tej samej subskrypcji platformy Azure i regionie świadczenia usługi Azure.

    • Jeśli pracujesz nad przepływem pracy aplikacji logiki Zużycie, konto integracji wymaga linku do zasobu aplikacji logiki.

    • Jeśli pracujesz nad przepływem pracy aplikacji logiki w warstwie Standardowa, możesz połączyć konto integracji z zasobem aplikacji logiki, przekazać mapy bezpośrednio do zasobu aplikacji logiki lub oba te scenariusze:

      • Jeśli masz już konto integracji z artefaktami, których potrzebujesz lub chcesz użyć, możesz połączyć konto integracji z wieloma zasobami standardowej aplikacji logiki, w których chcesz używać artefaktów. W ten sposób nie trzeba przekazywać map do poszczególnych aplikacji logiki. Aby uzyskać więcej informacji, zobacz Łączenie zasobu aplikacji logiki z kontem integracji.

      • Wbudowany łącznik Liquid umożliwia wybranie mapy, która została wcześniej przekazana do zasobu aplikacji logiki lub połączonego konta integracji, ale nie obu tych elementów. Następnie możesz użyć tych artefaktów we wszystkich podrzędnych przepływach pracy w ramach tego samego zasobu aplikacji logiki.

      Jeśli więc nie masz lub nie potrzebujesz konta integracji, możesz użyć opcji przekazywania. W przeciwnym razie możesz użyć opcji łączenia. Tak czy inaczej, można użyć tych artefaktów we wszystkich podrzędnych przepływach pracy w ramach tego samego zasobu aplikacji logiki.

  • Podstawowa wiedza na temat języka szablonu Liquid. Usługa Azure Logic Apps używa aplikacji DotLiquid 2.0.361.

    Uwaga

    Akcja Liquid o nazwie Transform JSON to JSON jest zgodna z implementacją DotLiquid dla liquid, która różni się w określonych przypadkach od implementacji Biblioteki Liquid. Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące szablonu Liquid.

Krok 1. Tworzenie szablonu

Zanim będzie można wykonać transformację Liquid w przepływie pracy aplikacji logiki, musisz najpierw utworzyć szablon Liquid definiujący żądane mapowanie.

  1. Utwórz szablon Liquid używany jako mapa przekształcenia JSON. Możesz użyć dowolnego narzędzia do edycji.

    Przykład przekształcenia JSON do JSON w tym artykule używa następującego przykładowego szablonu 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. Zapisz szablon przy użyciu rozszerzenia pliku Liquid (.liquid). W tym przykładzie użyto pliku SimpleJsonToJsonTemplate.liquid.

Krok 2. Przekazywanie szablonu Liquid

Po utworzeniu szablonu Liquid należy teraz przekazać szablon na podstawie następującego scenariusza:

  • Jeśli pracujesz nad przepływem pracy aplikacji logiki Zużycie, przekaż szablon na konto integracji.

  • Jeśli pracujesz nad przepływem pracy aplikacji logiki w warstwie Standardowa, możesz przekazać szablon do konta integracji lub przekazać szablon do zasobu aplikacji logiki.

Przekazywanie szablonu do konta integracji

  1. W witrynie Azure Portal zaloguj się przy użyciu poświadczeń konta platformy Azure.

  2. W polu wyszukiwania witryny Azure Portal wprowadź konta integracji i wybierz pozycję Konta integracji.

    Zrzut ekranu przedstawiający pole wyszukiwania w witrynie Azure Portal z wprowadzonymi kontami integracji i wybraną pozycję

  3. Znajdź i wybierz swoje konto integracji.

    Zrzut ekranu przedstawiający okienko kont integracji z wybranym kontem integracji.

  4. W menu nawigacji konta integracji w obszarze Ustawienia wybierz pozycję Mapy.

    Zrzut ekranu przedstawiający menu nawigacji konta integracji z wybraną funkcją

  5. W okienku Mapy wybierz pozycję Dodaj. Podaj następujące informacje o mapie:

    Właściwości Wartość Opis
    Nazwa/nazwisko JsonToJsonTemplate Nazwa mapy o nazwie "JsonToJsonTemplate" w tym przykładzie
    Typ mapy Ciecz Typ mapy. W przypadku przekształcenia JSON na JSON należy wybrać pozycję Liquid.
    Mapa SimpleJsonToJsonTemplate.liquid Istniejący szablon Liquid lub plik mapy do użycia na potrzeby transformacji, czyli "SimpleJsonToJsonTemplate.liquid" w tym przykładzie. Aby znaleźć ten plik, możesz użyć selektora plików. Aby uzyskać informacje o limitach rozmiaru mapy, zobacz Limity i konfiguracja.

    Zrzut ekranu przedstawiający okienko

Przekazywanie szablonu do standardowej aplikacji logiki

  1. W witrynie Azure Portal znajdź i otwórz zasób aplikacji logiki. Upewnij się, że jesteś na poziomie zasobu, a nie na poziomie przepływu pracy.

  2. W menu nawigacji zasobu aplikacji logiki w obszarze Artefakty wybierz pozycję Mapy.

  3. Na pasku narzędzi okienka Mapy wybierz pozycję Dodaj.

  4. W okienku Dodawanie mapy podaj następujące informacje o szablonie:

    Właściwości Wartość Opis
    Nazwa/nazwisko JsonToJsonTemplate Nazwa mapy o nazwie "JsonToJsonTemplate" w tym przykładzie
    Typ mapy Ciecz Typ mapy. W przypadku przekształcenia JSON na JSON należy wybrać pozycję Liquid.
    Mapa SimpleJsonToJsonTemplate.liquid Istniejący szablon Liquid lub plik mapy do użycia na potrzeby transformacji, czyli "SimpleJsonToJsonTemplate.liquid" w tym przykładzie. Aby znaleźć ten plik, możesz użyć selektora plików. Aby uzyskać informacje o limitach rozmiaru mapy, zobacz Limity i konfiguracja.
  5. Po zakończeniu wybierz OK.

    Po zakończeniu przekazywania pliku mapy mapa zostanie wyświetlona na liście Mapy . Na stronie Przegląd konta integracji w obszarze Artefakty zostanie również wyświetlona przekazana mapa.

Krok 3. Dodawanie akcji przekształcania Liquid

W poniższych krokach pokazano, jak dodać akcję przekształcania Liquid dla przepływów pracy aplikacji logiki Zużycie i Standardowa.

  1. W witrynie Azure Portal otwórz przepływ pracy aplikacji logiki w projektancie, jeśli jeszcze nie jest otwarty.

  2. Jeśli przepływ pracy nie ma wyzwalacza ani żadnych innych akcji, których potrzebuje przepływ pracy, najpierw dodaj te operacje. Operacje liquid nie mają dostępnych żadnych wyzwalaczy.

    W tym przykładzie jest kontynuowany wyzwalacz żądania o nazwie Po odebraniu żądania HTTP.

  3. W projektancie przepływu pracy w obszarze kroku, w którym chcesz dodać akcję Liquid, wybierz pozycję Nowy krok.

  4. W polu wyszukiwania Wybierz operację wybierz pozycję Wszystkie. W polu wyszukiwania wprowadź liquid.

  5. Z listy akcji wybierz akcję Liquid, której chcesz użyć.

    W tym przykładzie nadal jest używana akcja o nazwie Przekształć kod JSON do formatu JSON.

    Zrzut ekranu przedstawiający projektanta przepływu pracy Zużycie z wybraną akcją Liquid.

  6. We właściwości Content akcji podaj dane wyjściowe JSON z wyzwalacza lub poprzedniej akcji, którą chcesz przekształcić, wykonując następujące kroki.

    1. Kliknij wewnątrz pola Zawartość , aby wyświetlić listę zawartości dynamicznej.

    2. Z listy zawartości dynamicznej wybierz dane JSON, które chcesz przekształcić.

      W tym przykładzie z listy zawartości dynamicznej w obszarze Po odebraniu żądania HTTP wybierz token Treść , który reprezentuje dane wyjściowe zawartości treści z wyzwalacza.

      Zrzut ekranu przedstawiający przepływ pracy Zużycie, właściwość

  7. Z listy Mapa wybierz szablon Liquid.

    W tym przykładzie jest kontynuowany szablon o nazwie JsonToJsonTemplate.

    Zrzut ekranu przedstawiający przepływ pracy Zużycie, właściwość

    Uwaga

    Jeśli lista map jest pusta, zasób aplikacji logiki nie jest połączony z kontem integracji lub konto integracji nie zawiera żadnych plików mapy.

    Po zakończeniu akcja wygląda podobnie do poniższego przykładu:

    Zrzut ekranu przedstawiający przepływ pracy Zużycie z ukończoną akcją

  8. Zapisz przepływ pracy. Na pasku narzędzi projektanta wybierz pozycję Zapisz.

Testowanie przepływu pracy

Aby wyzwolić przepływ pracy, wykonaj następujące kroki:

  1. W wyzwalaczu Żądanie znajdź właściwość HTTP POST URL i skopiuj adres URL.

  2. Otwórz narzędzie żądania HTTP i użyj jego instrukcji, aby wysłać żądanie HTTP do skopiowanego adresu URL, w tym metodę oczekiwaną przez wyzwalacz żądania .

    W tym przykładzie użyto POST metody z adresem URL.

  3. Dołącz dane wejściowe JSON do przekształcenia, na przykład:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  4. Po zakończeniu działania przepływu pracy przejdź do historii uruchamiania przepływu pracy i sprawdź dane wejściowe i wyjściowe akcji Przekształć kod JSON na dane wejściowe i wyjściowe JSON , na przykład:

    Zrzut ekranu przedstawiający przykładowe dane wyjściowe.

Inne przekształcenia Liquid

Możesz użyć rozwiązania Liquid do wykonywania innych przekształceń, na przykład:

Przekształcanie formatu JSON na tekst

Poniższy szablon Liquid przedstawia przykładową transformację dla formatu JSON na tekst:

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

W poniższym przykładzie przedstawiono przykładowe dane wejściowe i wyjściowe:

Zrzut ekranu przedstawiający przykładowe dane wyjściowe przekształcania tekstu w formacie JSON.

Przekształcanie kodu XML w format JSON

Poniższy szablon Liquid przedstawia przykładową transformację kodu XML do formatu JSON:

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

Pętla JSONArrayFor jest niestandardowym mechanizmem pętli dla danych wejściowych XML, dzięki czemu można tworzyć ładunki JSON, które unikają przecinka końcowego. where Ponadto warunek tego niestandardowego mechanizmu pętli używa nazwy elementu XML do porównania, a nie wartości elementu, takiego jak inne filtry Liquid. Aby uzyskać więcej informacji, zobacz Szczegółowe omówienie zasad zestawu treści — kolekcje rzeczy.

W poniższym przykładzie przedstawiono przykładowe dane wejściowe i wyjściowe:

Zrzut ekranu przedstawiający przykładowe dane wyjściowe przekształcenia XML w formacie JSON.

Przekształcanie kodu XML na tekst

Poniższy szablon Liquid przedstawia przykładową transformację pliku XML do tekstu:

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

W poniższym przykładzie przedstawiono przykładowe dane wejściowe i wyjściowe:

Zrzut ekranu przedstawiający przykładowe dane wyjściowe przekształcenia XML na tekst.

Zagadnienia dotyczące szablonu Liquid

  • Szablony liquid są zgodne z limitami rozmiaru plików dla map w usłudze Azure Logic Apps.

  • Akcja Przekształć kod JSON na JSON jest zgodna z implementacją DotLiquid dla rozwiązania Liquid. Ta implementacja jest portem programu .NET Framework z implementacji Firmy Dla rozwiązania Liquid i różni się w określonych przypadkach.

    Na poniższej liście opisano znane różnice:

    • Akcja Przekształć kod JSON w formacie JSON natywnie generuje ciąg, który może zawierać kod JSON, XML, HTML itd. Akcja Liquid wskazuje tylko, że oczekiwane dane wyjściowe tekstu z szablonu Liquid są ciągiem JSON. Akcja powoduje, że aplikacja logiki analizuje dane wejściowe jako obiekt JSON i stosuje otokę, aby liquid mógł interpretować strukturę JSON. Po przekształceniu akcja instruuje aplikację logiki, aby analizować dane wyjściowe tekstu z liquid z powrotem do formatu JSON.

      Funkcja DotLiquid nie rozumie natywnie kodu JSON, dlatego upewnij się, że unikniesz znaku ukośnika odwrotnego (\) i innych zastrzeżonych znaków JSON.

    • Jeśli szablon używa filtrów Liquid, upewnij się, że są zgodne z konwencjami nazewnictwa DotLiquid i C#, które używają wielkości liter zdań. W przypadku wszystkich przekształceń Liquid upewnij się, że nazwy filtrów w szablonie również używają wielkości liter zdań. W przeciwnym razie filtry nie będą działać.

      Na przykład w przypadku używania filtru replace użyj polecenia Replace, a nie replace. Ta sama reguła ma zastosowanie w przypadku wypróbowania przykładów w witrynie DotLiquid online. Aby uzyskać więcej informacji, zobacz Filtry Liquid w technologii Liquid i Filtry DotLiquid Liquid. Specyfikacja Zawiera przykłady dla każdego filtru, więc dla porównania możesz wypróbować te przykłady na stronie DotLiquid — Wypróbuj online.

    • Filtr json z filtrów rozszerzeń Firmy nie jest obecnie implementowany w aplikacji DotLiquid. Zazwyczaj można użyć tego filtru do przygotowania danych wyjściowych tekstu do analizowania ciągów JSON, ale zamiast tego należy użyć filtru Replace .

    • Standardowy Replace filtr w implementacji DotLiquid używa dopasowania wyrażenia regularnego (RegEx), podczas gdy implementacja Firmy używa prostego dopasowywania ciągów. Obie implementacje wydają się działać w taki sam sposób, dopóki nie użyjesz znaku zarezerwowanego regex-reserved lub znaku ucieczki w parametrze dopasowania.

      Aby na przykład uciec od zastrzeżonego ukośnika odwrotnego regex(\), użyj znaku | Replace: '\\', '\\'ucieczki , a nie | Replace: '\', '\\'. W tych przykładach pokazano, jak Replace filtr zachowuje się inaczej podczas próby ucieczki od znaku ukośnika odwrotnego. Chociaż ta wersja działa pomyślnie:

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

      Dzięki temu wynikowi:

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

      Ta wersja kończy się niepowodzeniem:

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

      Z powodu tego błędu:

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

      Aby uzyskać więcej informacji, zobacz Zastępowanie filtru standardowego używa dopasowania wzorca RegEx....

    • Filtr Sort w implementacji DotLiquid sortuje elementy w tablicy lub kolekcji według właściwości, ale z następującymi różnicami:

Następne kroki