JSON Path Transformer V2
Descubra mais sobre o componente JSON Path Transformer V2 e saiba como usá-lo na Digibee Integration Platform.
O componente JSON Path Transformer V2 tem a função de receber qualquer entrada válida em JSON e realizar filtros e extrações de dados a partir de uma expressão. Esta versão do componente também suporta expressões Double Braces.
JSONPath é uma linguagem de consulta para JSON com recursos semelhantes ao XPath. Essa expressão é normalmente utilizada para selecionar e extrair os valores de propriedade de um objeto JSON. Leia mais na documentação sobre JSONPath.
Parâmetros
Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB)
.
Parâmetro | Descrição | Valor padrão | Tipo de dado |
---|---|---|---|
JSON Path | Serve para indicar qual expressão será utilizada no momento do processamento do JSON. É um parâmetro obrigatório e deve ser configurado de acordo com o que você deseja processar. Uma expressão Double Braces pode ser utilizada para obter o valor JSON Path dinamicamente da entrada. | $.store.books[?(@.title=='IT')] | String |
Fail On Error | Se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade "success". | False | Booleano |
Conheça as demais opções para a declaração JSONPath:
$: raiz do objeto ou vetor.
.property: seleciona uma propriedade específica no objeto relacionado.
['property']: seleciona uma propriedade específica no objeto relacionado. Coloque apenas aspas simples ao redor do nome da propriedade. Dica: considere essa instrução caso o nome da propriedade contenha caracteres especiais, assim como espaços, ou caso comece com caracteres diferentes de A..Za..z_.
[n]: seleciona o elemento n de um vetor. Os índices começam com 0.
[index1,index2,…]: seleciona elementos do vetor com índices específicos e retorna uma lista.
..property: recursiva descendente. Busca um nome de propriedade de maneira decrescente e retorna um vetor de todos os valores com esse nome de propriedade. Sempre retorna uma lista, mesmo que apenas 1 propriedade seja encontrada.
: o coringa seleciona todos os elementos em um objeto ou vetor, qualquer que sejam os seus nomes ou índices. Por exemplo, “endereço.” significa todas as propriedades do objeto endereço, enquanto “livro[*]” significa todos os itens de um vetor de livro.
[input:output] / [input:]: seleciona elementos de um vetor de entrada e até, porém não necessariamente, um vetor de saída. Se a saída é omitida, selecione todos os vetores até o final do vetor. Uma lista é retornada.
[:n]: seleciona os primeiros n elementos do vetor. Uma lista é retornada.
[-n:]: seleciona os últimos n elementos do vetor. Uma lista é retornada.
[?(expression)]: expressão de filtro. Seleciona todos os elementos em um objeto ou vetor que coincidem com o filtro especificado. Uma lista é retornada.
[(expression)]: expressões de script podem ser utilizadas no lugar de nomes explícitos de propriedades ou índices. Por exemplo, [(@.tamanho-1)], que seleciona o último item de um vetor. Aqui, tamanho se refere ao tamanho do vetor em questão mais do que um arquivo JSON nomeado "tamanho".
@: utilizado em expressões de filtro para fazer referência ao nó atual que está sendo processado.
==: igual a .1 e '1' são considerados o mesmo resultado. Valores de string devem ser anexados em aspas simples (e não em aspas): [?(@.cor=='vermelho')].
!=: diferente de. Valores de string devem ser anexados em aspas simples.
>: maior que.
>=: maior ou igual a.
<: menor que.
<=: menor ou igual a.
=~: compatível com uma RedEx Java Script regular. Por exemplo, [?(@.descricao =~ /gato.*/i)] casa itens cuja descrição começa com gato (ignora maiúsculas e minúsculas).
!: utilizado para negar um filtro. Por exemplo, [?(!@.isbn)] casa itens que não possuem a propriedade isbn.
&&: operador lógico E. Exemplo: [?(@.categoria=='ficcao' && @.preco < 10)]
||: operador lógico OU. Exemplo: [?(@.categoria=='ficcao' || @.preco < 10)]
Fluxo de mensagens
Entrada
Para demonstrar a funcionalidade desse componente, você precisa configurar um JSON de entrada em um pipeline com o JSON Path Transformer V2. Após adicioná-lo ao pipeline, é preciso configurar a expressão JSONPath como $.address..[?(@.postalCode == '02375')].streetAddress ou o exemplo não vai funcionar.
A intenção deste exemplo é filtrar os endereços de entrada por apenas um único código postal e retornar apenas a rua do endereço. Veja:
Saída
A estrutura será o JSON filtrado pela especificação JSONPath.
JSON Path Transformer V2 em ação
Veja abaixo como o componente se comporta em determinadas situações e a sua respectiva configuração em cada caso.
Retornar apenas os autores dos livros com um analisador descendente recursivo
Neste exemplo, você verá apenas os autores de um array com livros dentro de uma loja. A configuração de expressão do componente deve ser $..author.
Entrada
Saída
Retornar apenas produtos com menos que um valor limite especificado
Neste exemplo, você verá apenas os produtos de um array com preço menor que R$3.300,00. A configuração de expressão do componente deve ser $..[?(@.price<3300)].
Entrada
Saída
Informando uma expressão inválida com a configuração "Fail On Error: false"
Com este exemplo você pode configurar o componente com Fail On Error como “false” e utilizar a expressão $.
Com essas configurações, o resultado será uma mensagem de erro e com a propriedade "success": false
.
Entrada
Saída
Informando uma expressão inválida com a configuração "Fail On Error: true"
Com este exemplo você pode configurar o componente com Fail On Error como “true” e utilizar a expressão $.
Com essas configurações, o resultado será uma mensagem de erro e a execução será interrompida imediatamente.
Entrada
Saída
Returnando apenas resultados de erro de uma entrada array
Neste exemplo, somente os resultados de erro são extraídos de um array de execuções. A configuração da expressão do componente deve ser $..[?(@.error)]
.
Entrada
Saída
Obter a expressão JSON Path dinamicamente da entrada
Neste exemplo, o JSON Path é obtido dinamicamente da entrada usando uma expressão Double Braces. A configuração da expressão do componente deve ser {{ message.jsonPath }}
.
Entrada
Saída
Atualizado