Saltar al contenido principal

JSONPath

Consulta los cuerpos JSON de solicitudes y respuestas en Proxyman con JSONPath. Aprende la sintaxis, los operadores de filtro y ejemplos de rutas que puedes copiar.

1. ¿Qué es?​

JSONPath es un lenguaje de consulta que filtra datos JSON de forma rápida. En Proxyman, puedes usarlo en la pestaña JSON, en la pestaña Treeview y en columnas personalizadas.

Pestaña JSON de Proxyman filtrando el cuerpo de una respuesta con una expresión JSON Path

2. Cómo usarlo​

  1. En el panel Request o Response, haz clic en el botón +
  2. Selecciona JSON para añadir la pestaña JSON
  3. La barra de filtros aparece encima del cuerpo JSON
  4. Selecciona el modo de filtro JSON Path o jq

3. Sintaxis​

OperadorDescripción
$El elemento raíz sobre el que se consulta. Todas las expresiones de ruta empiezan por este.
@El nodo actual que procesa un predicado de filtro.
*Comodín. Disponible en cualquier lugar donde se requiera un nombre o un valor numérico.
..Búsqueda profunda. Disponible en cualquier lugar donde se requiera un nombre.
.<name>Hijo con notación de punto
['<name>' (, '<name>')]Hijo o hijos con notación de corchetes
[<number> (, <number>)]Índice o índices de array
[start:end]Operador de slice de array
[?(<expression>)]Expresión de filtro. La expresión debe devolver un valor booleano.

Operadores de filtro​

Los filtros son expresiones lógicas que se usan para filtrar arrays. Un filtro típico sería [?(@.age > 18)], donde @ representa el elemento actual que se procesa.

OperadorDescripción
==El operando izquierdo es igual al derecho (ten en cuenta que 1 no es igual a '1')
!=El operando izquierdo no es igual al derecho
<El operando izquierdo es menor que el derecho
<=El operando izquierdo es menor o igual que el derecho
>El operando izquierdo es mayor que el derecho
>=El operando izquierdo es mayor o igual que el derecho
=~El operando izquierdo coincide con la expresión regular [?(@.name =~ /foo.*?/i)]
inEl operando izquierdo existe en el derecho [?(@.size in ['S', 'M'])]
ninEl operando izquierdo no existe en el derecho
subsetofEl operando izquierdo es un subconjunto del derecho [?(@.sizes subsetof ['S', 'M', 'L'])]
anyofEl operando izquierdo tiene elementos en común con el derecho [?(@.sizes anyof ['M', 'L'])]
noneofEl operando izquierdo no tiene elementos en común con el derecho [?(@.sizes noneof ['M', 'L'])]
sizeEl tamaño del operando izquierdo (array o cadena) debe coincidir con el derecho
emptyEl operando izquierdo (array o cadena) debe estar vacío

Ejemplos de rutas​

Dados los siguientes datos JSON:

{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
JsonPathResultado
$.store.book[*].authorLos autores de todos los libros
$..authorTodos los autores
$.store.*Todos los elementos de store: los libros y la bicicleta
$.store..priceEl precio de todo
$..book[2]El tercer libro
$..book[-2]El penúltimo libro
$..book[0,1]Los dos primeros libros
$..book[:2]Todos los libros desde el índice 0 (incluido) hasta el índice 2 (excluido)
$..book[1:2]Todos los libros desde el índice 1 (incluido) hasta el índice 2 (excluido)
$..book[-2:]Los dos últimos libros
$..book[2:]Todos los libros desde el índice 2 (incluido) hasta el final
$..book[?(@.isbn)]Todos los libros con número ISBN
$.store.book[?(@.price < 10)]Todos los libros de store más baratos que 10
$..book[?(@.price <= $['expensive'])]Todos los libros de store que no son «expensive»
$..book[?(@.author =~ /.*REES/i)]Todos los libros que coinciden con la expresión regular (sin distinguir mayúsculas)
$..*Devuelve todo
$..book.length()El número de libros

Referencias​