Criando uma condição em JSONPath

A condição informa o caminho que o fluxo de integração deve seguir quando a informação ali descrita aparece no body do payload de solicitação/resposta do step anterior ao Choice V2.

Para definir a condição, você deverá usar uma expressão JSONPath.

JSONPath é uma linguagem de consulta para JSON que permite selecionar e extrair dados de um documento JSON. Você usa uma expressão JSONPath para percorrer o caminho até um elemento ou um conjunto de elementos na estrutura JSON.

Na imagem abaixo, a condição descrita para WHEN indica que se o elemento "cidade" for igual a "São Paulo", o fluxo deve seguir por esse caminho. Caso a informação seja diferente disso, o fluxo seguirá por outro caminho definido em outra condição WHEN ou OTHERWISE.

condition example city

Agora imagine que você tem o payload de resposta de um step anterior com a seguinte informação:

{
   "city": "São Paulo"
}

Assim, como o payload tem a informação do elemento cidade igual a São Paulo, o fluxo seguirá o caminho indicado na condição WHEN, como visto na imagem.

Regras de sintaxe do JSONPath

Para você entender melhor a composição de uma condição, vamos ver as principais regras de sintaxe de expressões JSONPath:

  • O símbolo "$" refere-se ao objeto ou elemento raiz.

  • O símbolo "@" refere-se ao objeto ou elemento atual.

  • O operador "." é usado para denotar um elemento filho do elemento atual.

  • "[ ]" é usado para denotar um elemento filho do elemento atual (por nome ou índice).

  • O operador "*" é um caractere curinga, retornando todos os objetos ou elementos independentemente de seus nomes.

  • O operador "," é o operador de união, que retorna a união dos filhos ou índices indicados.

  • O operador ":" é o operador para selecionar partes de arrays. Assim, ele retorna uma subcoleção de uma coleção.

  • "? ( )" é usado para filtrar todos os itens que atendem a um determinado critério.

Exemplos de uso

Agora veja exemplos de expressões, tendo como base a estrutura JSON abaixo:

Estrutura modificada e ampliada de Stefan Goessner.
 {
    "store": {
        "book": [
            {
                "category": "non-fiction",
                "author": "Jane Glover",
                "title": "Mozart in Italy",
                "price": 8.95,
                "year": 2023
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99,
                "year": 1851
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99,
                "year": 1954
            }
        ],
        "movie": [
            {
                "category": "TV series",
                "author": "David Crane and Marta Kauffman",
                "title": "Friends season 1",
                "price": 50,
                "year": 1995
            },
            {
                "category": "documentary",
                "author": "Craig Mazin",
                "title": "Chernobyl",
                "price": 35,
                "year": 2019
            },
            {
                "category": "fantasy",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "price": 40,
                "year": 2001
            }
        ]
    }
}
Operadores Expressão Significado

== (igual)

$.store.book[?(@.category == "fiction")]

retorna os livros da categoria ficção.

!= (diferente de)

$.store.book[?(@.author != "J. R. R. Tolkien")]

retorna os livros cujo autor não é J. R. R. Tolkien.

> (maior que)

$.store.book[?(@.year > 1980)]

retorna os livros lançados depois de 1980.

>= (maior ou igual a)

$.store.book[?(@.year >= 2000)]

retorna os livros lançados em ou após o ano 2000.

< (menor que)

$.book[?(@.price < 10)]

retorna os livros com preço menor que 10.

(menor ou igual a)

$.store.book[?(@.price ⇐ 15)]

retorna os livros com preço menor ou igual a 15.

=~ (compatível com RegEx JavaScript)

$.store.book[?(@.category =~ /fic.*/i)]

retorna os livros que pertencem à categoria que se inicia com "fic".

! (nega o filtro)

$.store.book[?(!@.isbn)]

retorna os livros que não têm número isbn.

&& (operador lógico E)

$.store.book[?(@.category=="fiction" && @.price < 10)]

retorna os livros da categoria ficção e com preço menor que 10.

logical or (operador lógico OU)

$.store.book[?(@.category=="fiction" logical or @.price < 10)]

retorna os livros da categoria ficção ou com preço menor que 10.

in

$.store.movie[?(@.category in ["documentary"])]

retorna os filmes que estejam na categoria documentário.

nin

$.store.movie[?(@.category nin ["fantasy"])]

retorna os filmes que estejam fora da categoria fantasy.

subsetof

$.store.movie[?(["fantasy"] subsetof @.category)]

retorna os filmes de fantasia, caso fantasia seja um subconjunto das categorias de filmes.

contains

$.store.book[?(@.title contains "Moby Dick")]

retorna o título "Moby Dick", caso exista dentre os títulos disponíveis.

size

$.store.book[?(@.title size 9)]

retorna os títulos de livros que tenham 9 caracteres, incluindo espaços.

empty true

$.store.book[?(@.isbn empty true)]

retorna os livros que tenham o isbn como um valor vazio.

empty false

$.store.book[?(@.isbn empty false)]

retorna os livros que tenham o isbn como um valor não-vazio.

Thanks for your feedback!
EDIT
How useful was this article to you?