# 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? {#1-whats-it}

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](https://proxyman.com/docs/es/basic-features/custom-header-column).

![Pestaña JSON de Proxyman filtrando el cuerpo de una respuesta con una expresión JSON Path](https://proxyman.com/docs/assets/Screenshot%202026-08-25%20at%2014.04.30.jpg)

## 2. Cómo usarlo {#2-how-to-use}

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 {#3-syntax}

| Operador                  | Descripció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 {#filter-operators}

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.

| Operador | Descripció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)]            |
| in       | El operando izquierdo existe en el derecho \[?(@.size in \['S', 'M'])]                         |
| nin      | El operando izquierdo no existe en el derecho                                                  |
| subsetof | El operando izquierdo es un subconjunto del derecho \[?(@.sizes subsetof \['S', 'M', 'L'])]    |
| anyof    | El operando izquierdo tiene elementos en común con el derecho \[?(@.sizes anyof \['M', 'L'])]  |
| noneof   | El operando izquierdo no tiene elementos en común con el derecho \[?(@.sizes noneof \['M', 'L'])] |
| size     | El tamaño del operando izquierdo (array o cadena) debe coincidir con el derecho                |
| empty    | El operando izquierdo (array o cadena) debe estar vacío                                        |

### Ejemplos de rutas {#path-examples}

Dados los siguientes datos JSON:

```javascript
{
    "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
}
```

| JsonPath                                | Resultado                                                                 |
| --------------------------------------- | ------------------------------------------------------------------------- |
| $.store.book\[\*].author                | Los autores de todos los libros                                           |
| $..author                               | Todos los autores                                                         |
| $.store.\*                              | Todos los elementos de store: los libros y la bicicleta                   |
| $.store..price                          | El 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 {#reference}

* [Jayway JsonPath en GitHub](https://github.com/json-path/JsonPath)
