Okta Workflows: Como ler um caminho JSON com notação de ponto

Sobre o autor

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

28 outubro 2022 Tempo de leitura: ~

A person is seated at a desk working on a computer in a modern office environment

Okta Workflows é uma plataforma no-code para automatizar processos de identidade. A equipe de Workflows realiza horário de atendimento semanal para responder às perguntas dos builders.

Este artigo no blog é baseado em uma pergunta feita durante o horário de atendimento: Como ler um caminho JSON com notação de ponto em Workflows? 

Para começar

Ao criar automações de Workflows, provavelmente será necessário ler valores de um objeto JSON. Por exemplo, a partir de um endpoint de API externo que retorna dados em formato JSON. Workflows possuem dois cartões para ajudar na leitura (recuperação) de valores de JSON:

  • Objeto – Obter
  • Objeto – obter vários

Utilize o seguinte JSON para demonstrar como os cartões funcionam. 

{ 
    "produto": "sorvete", 
    "ingredientes": { 
        "ingrediente": [{ 
                "id": 100, 
                "tipo": "chocolate"
            }, 
            { 
                "id": 200, 
                "tipo": "baunilha" 
            }, 
            { 
                "id": 300, 
                "tipo": "caramelo" 
            } 
        ] 
    }, 
    "loja": { 
        "inventario": { 
            "em_estoque": 100, 
            "encomendado": 50 
        } 
    } 
}

A notação de ponto é um caminho que corresponde a um item em JSON. 

Por exemplo, um caminho de produto retornará:

sorvete

Usando o objeto – cartão Get para ler JSON

Em Workflows, use o Objeto – Obter para ler um caminho JSON: 

Okta Workflows Object Get card displaying an input object with product and ingredients JSON, a path set to product, and an empty output field. Usando o cartão Get para ler dados do JSON Path

Testando este cartão:

Test "Get" modal displaying an input JSON object, path notation set to product, and evaluated output string "ice cream". Testando o cartão Get

Vamos ver mais exemplos. 

Usando o caminho ingredients.ingredient.0 resultará em:

{ 
"id": 100,

"type": "chocolate"

}

Resultado ao testar usando o cartão Objeto – Obter: 

Interface for testing a JSON path with dot notation, showing input JSON, path ingredients.ingredient.0, and output JSON. Usando a notação de ponto em caminhos.

Um ponto importante a lembrar é que o tipo de saída precisa corresponder ao tipo JSON. Se o caminho que foi inserido recuperar texto simples, o tipo deverá ser Texto. Se o caminho retornar um objeto, o tipo deverá ser definido como Objeto (caso contrário, o senhor obterá resultados incorretos). 

Usando o exemplo acima, definir o tipo de saída como Texto resultará nisto: 

Test "Get" interface showing a JSON input object, path notation ingredients.ingredient.0, and output displaying [object Object]. Testando o cartão Get com um tipo de saída incorreto

Configurar o tipo de saída correto: 

Okta Workflows Object Get card configured with path ingredients.ingredient.0 and an orange arrow pointing to the output field labeled "Enter key name here". Testando o cartão Get com um tipo de saída correto

Este exemplo mostra como acessar um array com ingredients.ingredient.1.type:

Test "Get" modal displaying an array with chocolate and vanilla objects, path ingredients.ingredient.1.type, and output value "vanilla". Acessando um array usando um caminho com notação de ponto.

Observe que o tipo de saída está definido como Texto, pois a saída é uma string. 

Mais um exemplo usando o caminho shop.inventory retornará

{
  "instock": 100,
  "ordered": 50
}
Test "Get" modal displaying an input object with shop inventory JSON, path shop.inventory, and output JSON showing instock and ordered counts. Testando o cartão Get para acessar um objeto JSON

Observe que o tipo de saída está definido como Objeto, pois a saída é um objeto. 

Usando objeto – obter múltiplos para ler JSON

Objeto – o método Get retorna um único caminho JSON. O cartão Objeto – Obter Múltiplos funciona de forma semelhante e pode produzir vários caminhos. Você pode inserir quantos caminhos precisar como saída:

Okta Workflows Object Get Multiple card showing JSON input data, multiple path inputs including product and shop.inventory, and an orange arrow pointing to a selected path field. Usando o cartão Get Multiple

Observe que o tipo de saída é definido no caminho ao usar o cartão Objeto–Obter Vários. 

Test "Get Multiple" modal displaying input JSON and corresponding outputs for paths product, ingredients.ingredient.0, ingredients.ingredient.1.type, and shop.inventory. Testando o cartão Get Multiple

O Avaliador Online JSONPath é uma ferramenta online onde é possível testar os caminhos em notação de ponto. 

JSONPath Online Evaluator web interface showing input JSON, JSONPath shop.inventory, and evaluated results displaying instock and ordered counts. Ferramenta de avaliação online JSONPath

Se você precisar validar (e formatar) uma amostra JSON, use a ferramenta JSON Lint.

Esclareça suas dúvidas sobre os Workflows.

Você tem alguma dúvida sobre o Okta Workflows? Não tem certeza de como criar um fluxo? Participe do horário de atendimento comunitário semanal para obter ajuda. 

Sobre o autor

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

Continue sua jornada de identidade