Transforme JSON e XML usando modelos Liquid como mapas em fluxos de trabalho usando os Aplicativos Lógicos do Azure

Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)

Quando quiser executar transformações JSON básicas em seus fluxos de trabalho de aplicativo lógico, você pode usar operações de dados internas, como a ação Compor ou a ação Analisar JSON. No entanto, alguns cenários podem exigir transformações avançadas e complexas que incluem elementos como iterações, fluxos de controle e variáveis. Para transformações entre JSON para JSON, JSON para texto, XML para JSON ou XML para texto, você pode criar um modelo que descreva o mapeamento ou a transformação necessários usando a linguagem de modelo de código aberto Liquid. Você pode selecionar esse modelo ao adicionar uma ação interna do Liquid ao seu fluxo de trabalho. Você pode usar ações líquidas em fluxos de trabalho de aplicativo lógico de consumo multilocatário e fluxos de trabalho de aplicativo lógico padrão de locatário único.

Embora nenhum gatilho Liquid esteja disponível, você pode usar qualquer gatilho ou ação para alimentar o conteúdo JSON ou XML de origem em seu fluxo de trabalho. Por exemplo, você pode usar um gatilho de conector interno, um gatilho de conector gerenciado ou hospedado no Azure disponível para Aplicativos Lógicos do Azure ou até mesmo outro aplicativo.

Este artigo mostra como concluir as seguintes tarefas:

  • Crie um modelo Líquido.
  • Carregue o modelo para sua conta de integração para fluxos de trabalho do aplicativo lógico de consumo ou para o recurso do aplicativo lógico padrão para uso em qualquer fluxo de trabalho filho.
  • Adicione uma ação Liquid ao seu fluxo de trabalho.
  • Selecione o modelo como o mapa que você deseja usar.

Para obter mais informações, consulte a seguinte documentação:

Pré-requisitos

  • Uma conta e subscrição do Azure. Se não tiver uma subscrição, inscreva-se numa conta do Azure gratuita.

  • Seu recurso e fluxo de trabalho do aplicativo lógico. As operações líquidas não têm gatilhos disponíveis, portanto, seu fluxo de trabalho deve incluir minimamente um gatilho. Para mais informações, consulte a seguinte documentação:

  • Com base no fato de você estar trabalhando em um fluxo de trabalho de aplicativo lógico Consumo ou Padrão, você precisará de um recurso de conta de integração. Normalmente, você precisa desse recurso quando deseja definir e armazenar artefatos para uso em integração empresarial e fluxos de trabalho B2B.

    Importante

    Para trabalhar em conjunto, sua conta de integração e o recurso do aplicativo lógico devem existir na mesma assinatura do Azure e na mesma região do Azure.

    • Se você estiver trabalhando em um fluxo de trabalho de aplicativo lógico de consumo, sua conta de integração exigirá um link para o recurso do aplicativo lógico.

    • Se você estiver trabalhando em um fluxo de trabalho de aplicativo lógico padrão, poderá vincular sua conta de integração ao recurso do aplicativo lógico, carregar mapas diretamente para o recurso do aplicativo lógico ou ambos, com base nos seguintes cenários:

      • Se você já tiver uma conta de integração com os artefatos que precisa ou deseja usar, poderá vincular a conta de integração a vários recursos do aplicativo lógico padrão onde deseja usar os artefatos. Dessa forma, você não precisa carregar mapas para cada aplicativo lógico individual. Para obter mais informações, consulte Vincular seu recurso de aplicativo lógico à sua conta de integração.

      • O conector integrado Liquid permite selecionar um mapa que você carregou anteriormente para o recurso do aplicativo lógico ou para uma conta de integração vinculada, mas não ambos. Em seguida, você pode usar esses artefatos em todos os fluxos de trabalho filho dentro do mesmo recurso de aplicativo lógico.

      Então, se você não tem ou precisa de uma conta de integração, você pode usar a opção de upload. Caso contrário, você pode usar a opção de vinculação. De qualquer forma, você pode usar esses artefatos em todos os fluxos de trabalho filho dentro do mesmo recurso de aplicativo lógico.

  • Conhecimento básico sobre a linguagem de template Liquid. Os Aplicativos Lógicos do Azure usam o DotLiquid 2.0.361.

    Nota

    A ação Liquid chamada Transform JSON to JSON segue a implementação DotLiquid para Liquid, que difere em casos específicos da implementação Shopify para Liquid. Para obter mais informações, consulte Considerações sobre o modelo líquido.

Etapa 1: Criar o modelo

Antes de executar uma transformação Liquid no fluxo de trabalho do aplicativo lógico, você deve primeiro criar um modelo Liquid que defina o mapeamento desejado.

  1. Crie o modelo Liquid que você usa como um mapa para a transformação JSON. Você pode usar qualquer ferramenta de edição que desejar.

    O exemplo de transformação JSON para JSON neste artigo usa o seguinte modelo Liquid de exemplo:

    {%- 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. Salve o modelo usando a extensão de arquivo Liquid template (.liquid). Este exemplo usa SimpleJsonToJsonTemplate.liquid.

Passo 2: Carregar o modelo Liquid

Depois de criar seu modelo Liquid, agora você precisa carregar o modelo com base no seguinte cenário:

Carregar modelo para a conta de integração

  1. No portal do Azure, entre com suas credenciais de conta do Azure.

  2. Na caixa de pesquisa do portal do Azure, insira contas de integração e selecione Contas de integração.

    Screenshot showing the Azure portal search box with

  3. Encontre e selecione sua conta de integração.

    Screenshot showing integration accounts pane with integration account selected.

  4. No menu de navegação da conta de integração, em Configurações, selecione Mapas.

    Screenshot showing integration account navigation menu with

  5. No painel Mapas, selecione Adicionar. Forneça as seguintes informações sobre o seu mapa:

    Property valor Descrição
    Nome JsonToJsonTemplate O nome do seu mapa, que é "JsonToJsonTemplate" neste exemplo
    Tipo de mapa Líquido O tipo para o seu mapa. Para a transformação JSON para JSON, você deve selecionar Liquid.
    Mapa SimpleJsonToJsonTemplate.liquid Um modelo Liquid existente ou arquivo de mapa para usar para transformação, que é "SimpleJsonToJsonTemplate.liquid" neste exemplo. Para encontrar esse arquivo, você pode usar o seletor de arquivos. Para limites de tamanho do mapa, consulte Limites e configuração.

    Screenshot showing

Carregar modelo para o aplicativo lógico padrão

  1. No portal do Azure, localize e abra seu recurso de aplicativo lógico. Certifique-se de que você está no nível de recursos, não no nível do fluxo de trabalho.

  2. No menu de navegação do recurso do aplicativo lógico, em Artefatos, selecione Mapas.

  3. Na barra de ferramentas do painel Mapas, selecione Adicionar.

  4. No painel Adicionar Mapa, forneça as seguintes informações sobre seu modelo:

    Property valor Descrição
    Nome JsonToJsonTemplate O nome do seu mapa, que é "JsonToJsonTemplate" neste exemplo
    Tipo de mapa Líquido O tipo para o seu mapa. Para a transformação JSON para JSON, você deve selecionar Liquid.
    Mapa SimpleJsonToJsonTemplate.liquid Um modelo Liquid existente ou arquivo de mapa para usar para transformação, que é "SimpleJsonToJsonTemplate.liquid" neste exemplo. Para encontrar esse arquivo, você pode usar o seletor de arquivos. Para limites de tamanho do mapa, consulte Limites e configuração.
  5. Quando tiver terminado, selecione OK.

    Depois que o upload do arquivo de mapa terminar, o mapa aparecerá na lista Mapas . Na página Visão geral da sua conta de integração, em Artefatos, o mapa carregado também aparece.

Etapa 3: Adicionar a ação de transformação de líquido

As etapas a seguir mostram como adicionar uma ação de transformação Liquid para fluxos de trabalho do aplicativo lógico Consumo e Padrão.

  1. No portal do Azure, abra o fluxo de trabalho do aplicativo lógico no designer, se ainda não estiver aberto.

  2. Se o fluxo de trabalho não tiver um gatilho ou quaisquer outras ações necessárias, adicione essas operações primeiro. As operações líquidas não têm gatilhos disponíveis.

    Este exemplo continua com o gatilho Request chamado When a HTTP request is received.

  3. No designer de fluxo de trabalho, na etapa em que você deseja adicionar a ação Líquido, selecione Nova etapa.

  4. Na caixa de pesquisa Escolha uma operação, selecione Todos. Na caixa de pesquisa, digite liquid.

  5. Na lista de ações, selecione a ação Líquido que deseja usar.

    Este exemplo continua usando a ação chamada Transformar JSON em JSON.

    Screenshot showing Consumption workflow designer with a Liquid action selected.

  6. Na propriedade Content da ação, forneça a saída JSON do gatilho ou de uma ação anterior que você deseja transformar seguindo estas etapas.

    1. Clique dentro da caixa Conteúdo para que a lista de conteúdo dinâmico seja exibida.

    2. Na lista de conteúdo dinâmico, selecione os dados JSON que você deseja transformar.

      Neste exemplo, na lista de conteúdo dinâmico, em Quando uma solicitação HTTP for recebida, selecione o token Body , que representa a saída de conteúdo do corpo do gatilho.

      Screenshot showing Consumption workflow, Liquid action's

  7. Na lista Mapa, selecione seu modelo Líquido.

    Este exemplo continua com o modelo chamado JsonToJsonTemplate.

    Screenshot showing Consumption workflow, Liquid action's

    Nota

    Se a lista de mapas estiver vazia, o recurso do aplicativo lógico não está vinculado à sua conta de integração ou a conta de integração não contém nenhum arquivo de mapa.

    Quando terminar, a ação será semelhante ao exemplo a seguir:

    Screenshot showing Consumption workflow with finished

  8. Salve seu fluxo de trabalho. Na barra de ferramentas do estruturador, selecione Guardar.

Testar o fluxo de trabalho

  1. Usando o Postman ou uma ferramenta semelhante e o POST método, envie uma chamada para a URL do gatilho Request, que aparece na propriedade HTTP POST URL do gatilho Request, e inclua a entrada JSON para transformar, por exemplo:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  2. Depois que o fluxo de trabalho terminar a execução, vá para o histórico de execução do fluxo de trabalho e examine as entradas e saídas da ação Transformar JSON em JSON , por exemplo:

    Screenshot showing example output.

Outras transformações líquidas

Você pode usar o Liquid para executar outras transformações, por exemplo:

Transformar JSON em texto

O modelo Liquid a seguir mostra um exemplo de transformação de JSON em texto:

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

O exemplo a seguir mostra as entradas e saídas de exemplo:

Screenshot showing example output for JSON to text transformation.

Transformar XML em JSON

O modelo Liquid a seguir mostra um exemplo de transformação de XML para JSON:

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

O JSONArrayFor loop é um mecanismo de looping personalizado para entrada XML para que você possa criar cargas úteis JSON que evitem uma vírgula à direita. Além disso, a where condição para esse mecanismo de looping personalizado usa o nome do elemento XML para comparação, em vez do valor do elemento como outros filtros Liquid. Para obter mais informações, consulte Deep Dive on set-body Policy - Collections of Things.

O exemplo a seguir mostra as entradas e saídas de exemplo:

Screenshot showing example output for XML to JSON transformation.

Transformar XML em texto

O modelo Liquid a seguir mostra um exemplo de transformação de XML em texto:

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

O exemplo a seguir mostra as entradas e saídas de exemplo:

Screenshot showing example output for XML to text transformation.

Considerações sobre modelos líquidos

  • Os modelos líquidos seguem os limites de tamanho de arquivo para mapas nos Aplicativos Lógicos do Azure.

  • A ação Transformar JSON em JSON segue a implementação DotLiquid para Liquid. Essa implementação é uma porta para o .NET Framework da implementação do Shopify para Liquid e difere em casos específicos.

    A lista a seguir descreve as diferenças conhecidas:

    • A ação Transformar JSON em JSON gera nativamente uma cadeia de caracteres, que pode incluir JSON, XML, HTML e assim por diante. A ação Liquid indica apenas que a saída de texto esperada do modelo Liquid é uma cadeia de caracteres JSON. A ação instrui seu aplicativo lógico a analisar a entrada como um objeto JSON e aplica um wrapper para que o Liquid possa interpretar a estrutura JSON. Após a transformação, a ação instrui seu aplicativo lógico a analisar a saída de texto do Liquid de volta para JSON.

      O DotLiquid não entende JSON nativamente, portanto, certifique-se de escapar do caractere de barra invertida (\) e de quaisquer outros caracteres JSON reservados.

    • Se o seu modelo usa filtros Líquidos, certifique-se de seguir as convenções de nomenclatura DotLiquid e C#, que usam caixa de frase. Para todas as transformações de líquido, certifique-se de que os nomes dos filtros em seu modelo também usem caixa de frase. Caso contrário, os filtros não funcionarão.

      Por exemplo, quando você usa o replace filtro, use Replace, não replace. A mesma regra se aplica se você experimentar exemplos no DotLiquid online. Para obter mais informações, consulte Shopify Liquid filters e DotLiquid Liquid filters. A especificação do Shopify inclui exemplos para cada filtro, portanto, para comparação, você pode tentar esses exemplos em DotLiquid - Try online.

    • O json filtro dos filtros de extensão da Shopify não está atualmente implementado no DotLiquid. Normalmente, você pode usar esse filtro para preparar a saída de texto para a análise de cadeia de caracteres JSON, mas, em vez disso, você precisa usar o Replace filtro.

    • O filtro padrão Replace na implementação DotLiquid usa correspondência de expressão regular (RegEx), enquanto a implementação do Shopify usa correspondência de cadeia de caracteres simples. Ambas as implementações parecem funcionar da mesma maneira até que você use um caractere reservado RegEx ou um caractere de escape no parâmetro match.

      Por exemplo, para escapar do caractere de escape de barra invertida (\) reservado ao RegEx, use | Replace: '\\', '\\', e não | Replace: '\', '\\'. Estes exemplos mostram como o Replace filtro se comporta de forma diferente quando você tenta escapar do caractere de barra invertida. Embora esta versão funcione com sucesso:

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

      Com este resultado:

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

      Esta versão falha:

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

      Com este erro:

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

      Para obter mais informações, consulte Substituir filtro padrão usa correspondência de padrão RegEx....

    • O Sort filtro na implementação DotLiquid classifica os itens em uma matriz ou coleção por propriedade, mas com estas diferenças:

Próximos passos