Transformar JSON e XML usando modelos Liquid como mapas nos Aplicativos Lógicos do Azure

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

Quando você deseja executar transformações JSON básicas nos fluxos de trabalho de seus aplicativos lógicos, pode usar operações de dados internos como a ação Compor ou Analisar o 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, é possível criar um modelo que descreva o mapeamento ou a transformação necessários usando a linguagem do modelo de código aberto Liquid. Você pode selecionar esse modelo ao adicionar uma ação interna Liquid ao fluxo de trabalho. Você pode usar ações Liquid em fluxos de trabalho de aplicativo lógico de consumo multilocatário e fluxos de trabalho de aplicativo lógico Standard de locatário único.

Embora nenhum gatilho do Liquid esteja disponível, é possível 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 os Aplicativos Lógicos do Azure ou até mesmo outro aplicativo.

Este artigo mostra como completar as seguintes tarefas:

  • Criar um modelo Liquid.
  • Carregue o modelo na conta de integração para fluxos de trabalho do aplicativo lógico de consumo ou para o recurso de aplicativo lógico Standard para uso em qualquer fluxo de trabalho filho.
  • Adicione uma ação Liquid ao fluxo de trabalho.
  • Selecionar o modelo como o mapa que você deseja usar.

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

Pré-requisitos

  • Uma conta e uma assinatura do Azure. Se você não tem uma assinatura, inscreva-se em uma conta gratuita do Azure.

  • Seu recurso de aplicativo lógico e fluxo de trabalho. As operações Liquid não têm gatilhos disponíveis, portanto, o fluxo de trabalho precisa incluir minimamente um gatilho. Para saber mais, confira a documentação a seguir:

  • Ao trabalhar com o fluxo de trabalho de aplicativo lógico de consumo ou padrão, você precisará de um recurso de conta de integração. Normalmente, esse recurso é necessário ao definir e armazenar artefatos para uso na integração corporativa e nos fluxos de trabalho de B2B.

    Importante

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

    • Se você estiver trabalhando em um fluxo de trabalho de aplicativo lógico de consumo, a 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 Standard, poderá vincular a 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, pode vincular a conta de integração a vários recursos do aplicativo lógico Standard em que deseja usar os artefatos. Dessa forma, não será necessário carregar mapas em cada aplicativo lógico individual. Para obter mais informações, examine Vincular o recurso do aplicativo lógico à conta de integração.

      • O conector interno Liquid permite selecionar um mapa já carregado no recurso de aplicativo lógico ou em uma conta de integração vinculada, mas não em ambos. É possível usar esses artefatos em todos os fluxos de trabalho secundários dentro do mesmo recurso de aplicativo lógico.

      Portanto, se você não tiver ou precisar de uma conta de integração, poderá usar a opção de carregamento. Caso contrário, use a opção de vinculação. É possível usar esses artefatos em todos os fluxos de trabalho secundários dentro do mesmo recurso de aplicativo lógico.

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

    Observação

    A ação Liquid denominada Transformar JSON em JSON segue a implementação de DotLiquid para Liquid, que difere em casos específicos da implementação de Shopify para Liquid. Para obter mais informações, confira Considerações sobre o modelo Liquid.

Etapa 1: Criar o modelo

Para executar uma transformação Liquid em seu fluxo de trabalho do aplicativo lógico, crie 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 de JSON em 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 do modelo Liquid (.liquid). Este exemplo usa SimpleJsonToJsonTemplate.liquid.

Etapa 2: Carregar o modelo na linguagem Liquid

Após criar o modelo Liquid, você precisará carregar o modelo com base no seguinte cenário:

Carregar o modelo na conta de integração

  1. No portal do Azure, entre com suas credenciais da 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. Localize e selecione a 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 seu mapa:

    Propriedade Valor Descrição
    Nome JsonToJsonTemplate O nome de seu mapa, que é "JsontoJsonTemplate" neste exemplo
    Tipo de mapa Liquid O tipo do mapa. Para JSON para transformação de JSON, você deve selecionar Liquid.
    Map SimpleJsonToJsonTemplate.liquid Um arquivo de modelo ou mapa Liquid existente para usar para a transformação, que é "SimpleJsonToJsonTemplate.liquid" neste exemplo. Para localizar este arquivo, você pode usar o seletor de arquivos. Para os limites de tamanho do mapa, confira Limites e configuração.

    Screenshot showing

Carregar o modelo no aplicativo lógico Standard

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

  2. No menu de navegação do recurso do aplicativo lógico, em Artifacts, 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:

    Propriedade Valor Descrição
    Nome JsonToJsonTemplate O nome de seu mapa, que é "JsontoJsonTemplate" neste exemplo
    Tipo de mapa Liquid O tipo do mapa. Para JSON para transformação de JSON, você deve selecionar Liquid.
    Map SimpleJsonToJsonTemplate.liquid Um arquivo de modelo ou mapa Liquid existente para usar para a transformação, que é "SimpleJsonToJsonTemplate.liquid" neste exemplo. Para localizar este arquivo, você pode usar o seletor de arquivos. Para os limites de tamanho do mapa, confira Limites e configuração.
  5. Quando terminar, selecione OK.

    Depois que o arquivo de mapa termina de carregar, o mapa aparece na lista Mapas. No página Visão geral da conta de integração, em Artefatos, o mapa carregado também é exibido.

Etapa 3: Adicionar a ação de transformação Liquid

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

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

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

    Este exemplo continua com o gatilho de solicitação chamado Quando uma solicitação HTTP é recebida.

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

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

  5. Na lista de Ações, selecione a ação Liquid que você quer 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 Conteúdo da ação, forneça a saída JSON do gatilho ou uma ação anterior que você deseja transformar seguindo estas etapas.

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

    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 Corpo, que representa a saída de conteúdo do corpo do gatilho.

      Screenshot showing Consumption workflow, Liquid action's

  7. Na lista Mapa, selecione o modelo Liquid.

    Este exemplo continua com o modelo chamado JsonToJsonTemplate.

    Screenshot showing Consumption workflow, Liquid action's

    Observação

    Quando a lista de mapas está vazia, isso significa que o recurso de aplicativo lógico não está vinculado à conta de integração ou que ela não contém arquivos de mapa.

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

    Screenshot showing Consumption workflow with finished

  8. Salve seu fluxo de trabalho. Selecione Salvar na barra de ferramentas do designer.

Testar seu fluxo de trabalho

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

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  2. Depois que o fluxo de trabalho terminar de ser executado, 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 Liquid

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

Transformar o JSON em texto

O modelo Liquid a seguir mostra uma transformação de exemplo 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 uma transformação de exemplo de XML em JSON:

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

O loop JSONArrayFor é um mecanismo de looping personalizado para a entrada XML para que você possa criar cargas JSON que evitem uma vírgula à direita. Além disso, a condição where para esse mecanismo de loop personalizado usa o nome do elemento XML para comparação, em vez de o valor do elemento como outros filtros Liquid. Para obter mais informações, confira Aprofundar-se na política set-body – Coleções de coisas.

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 uma transformação de exemplo 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 o modelo Liquid

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

  • A ação Transformar JSON em JSON segue a implementação de DotLiquid para Liquid. Essa implementação é uma porta para o .NET Framework da Implementação de 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 o aplicativo lógico a analisar a entrada como um objeto JSON e aplica um wrapper para que 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 de Liquid de volta para JSON.

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

    • Se o modelo usar filtros Liquid, siga as convenções de nomenclatura de DotLiquid e C#, que usam maiúsculas e minúsculas na frase. Para todas as transformações Liquid, verifique se os nomes de filtro em seu modelo também usam maiúsculas e minúsculas na frase. Caso contrário, os filtros não funcionarão.

      Por exemplo, quando você usar o filtro replace, use Replace, não replace. A mesma regra se aplicará se você experimentar exemplos no DotLiquid online. Para obter mais informações, confira Filtros Liquid de Shopify e Filtros Liquid DotLiquid. A especificação de Shopify inclui exemplos para cada filtro, portanto, para comparação, você pode experimentar esses exemplos em DotLiquid – Experimentar online.

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

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

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

      { "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, confira Substituir a correspondência de padrão RegEx que usa o filtro padrão....

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

Próximas etapas