Creando una Condición en JSONPath

La condición indica el camino que debe seguir el flujo de integración cuando la condición descrita aparece en el body del payload de solicitud/respuesta del step anterior al Choice V2.

Para definir la condición, debe utilizar una expresión JSONPath.

JSONPath es un lenguaje de consulta para JSON que permite seleccionar y extraer datos de un documento JSON. Utilice una expresión JSONPath para recorrer el camino hasta un elemento o un conjunto de elementos en la estructura JSON.

En la imagen a continuación, la condición descrita para WHEN indica que si el elemento "ciudad" es igual a "São Paulo", el flujo debe seguir por este camino. Si la información es diferente, el flujo seguirá por otro camino definido en otra condición WHEN o OTHERWISE.

condition example city

Ahora, imagine que tiene el payload de respuesta de un step anterior con la información siguiente:

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

Así, como el payload tiene la información del elemento de ciudad igual a São Paulo, el flujo seguirá el camino indicado en la condición WHEN, como vimos en la imagen.

Reglas de sintaxis JSONPath

Para entender mejor la composición de una condición, veamos las principales reglas de sintaxis de las expresiones JSONPath:

  • El símbolo "$" se refiere al objeto o elemento raíz.

  • El símbolo "@" se refiere al objeto o elemento actual.

  • El operador "." se usa para denotar un elemento hijo del elemento actual.

  • "[ ]" es utilizado para denotar un elemento hijo del elemento actual (por nombre o índice).

  • El operador "*" es un carácter comodín, devolviendo todos los objetos o elementos independientemente de sus nombres.

  • El operador "," es el operador de unión, que devuelve la unión de los hijos o índices indicados.

  • El operador ":" es el operador para seleccionar partes de arrays. Así, devuelve una subcolección de una colección.

  • "? ( )" se utiliza para filtrar todos los elementos que cumplen con un criterio específico.

Ejemplos de uso

Ahora vea ejemplos de expresiones, basados en la estructura JSON a continuación:

Estructura modificada y 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 Expresión Significado

== (igual a)

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

devuelve los libros de la categoría de ficción.

!= (no igual a)

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

devuelve los libros cuyo autor no es J. R. R. Tolkien.

> (mayor que)

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

devuelve los libros publicados después de 1980.

>= (mayor que o igual a)

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

devuelve los libros publicados en o después del año 2000.

< (menor que)

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

devuelve los libros con un precio inferior a 10.

(menor que o igual a)

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

devuelve los libros con un precio menor o igual a 15.

=~ (compatible con RegEx JavaScript)

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

devuelve los libros que pertenecen a la categoría que comienza con "fic".

! (niega el filtro)

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

devuelve los libros que no tienen número isbn.

&& (operador lógico Y)

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

devuelve los libros en la categoría de ficción y con un precio inferior a 10.

logical or (operador lógico O)

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

devuelve los libros en la categoría de ficción o con un precio inferior a 10.

in

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

devuelve las películas que están en la categoría documental.

nin

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

devuelve las películas que están fuera de la categoría de fantasía.

subsetof

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

devuelve las películas de fantasía, si fantasia es un subconjunto de las categorías de películas.

contains

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

devuelve el título "Moby Dick", si existe entre los títulos disponibles.

size

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

devuelve los títulos de libros que tienen 9 caracteres, espacios incluidos.

empty true

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

devuelve los libros que tienen isbn como valor vacío.

empty false

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

devuelve los libros que tienen isbn como valor no vacío.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]