Qué hace
JSONPath es un lenguaje de consulta para JSON, parecido a lo que XPath es para XML. Una consulta como $.store.book[*].title recorre un documento y selecciona los valores que te interesan. Este evaluador ejecuta una expresión JSONPath sobre el JSON que pegues y muestra cada coincidencia en un array JSON: los valores encontrados, sus rutas normalizadas (por ejemplo $['store']['book'][0]['title']) o ambas cosas.
Sigue RFC 9535, el estándar del IETF publicado en 2024, así que los resultados coinciden con las bibliotecas modernas de JavaScript, Java, Python, Go y otros lenguajes. Úsalo para probar una consulta antes de ponerla en el código, para averiguar por qué un filtro no devuelve nada o para extraer unos pocos campos de una respuesta de API grande.
Cómo se usa
- Pega JSON en el cuadro JSON, sube un archivo
.jsono pulsa Ejemplo para cargar el clásico documento de la librería. - Escribe una consulta en Expresión JSONPath. Las coincidencias se actualizan mientras escribes.
- Elige qué Mostrar: valores, rutas o pares ruta/valor.
- Copia o descarga el resultado. Si la consulta tiene un error de sintaxis, se indica el carácter donde falló el análisis.
Chuleta de sintaxis
| Expresión | Significado |
|---|---|
$ | La raíz del documento |
.name o ['name'] | Un miembro de un objeto |
[0], [-1] | Un elemento de array (los negativos cuentan desde el final) |
[1:3], [::2] | Un slice: inicio, fin (excluido) y paso |
* | Todos los miembros o elementos |
..name | name a cualquier profundidad |
[?@.price < 10] | Hijos para los que el filtro es verdadero; @ es el elemento actual |
Los filtros pueden combinar condiciones con &&, || y !, comparar con otras partes del documento mediante $ y llamar a funciones: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') para que toda la cadena coincida con la expresión regular y search(@.title, 'Ring') para una coincidencia en cualquier parte.
Ejemplo
Con la librería de ejemplo, esta consulta selecciona los títulos de los libros que cuestan menos de 10:
$.store.book[?@.price < 10].title
y devuelve:
["Sayings of the Century", "Moby Dick"]
Cámbiala por $..book[?@.isbn].author para listar los autores de los libros con ISBN, o por $..price para reunir todos los precios de la tienda, incluido el de la bicicleta.
Preguntas frecuentes
› ¿Qué sintaxis de JSONPath se admite?
La sintaxis estándar de RFC 9535: nombres de miembro con punto y corchetes, comodines, índices de array (también negativos), slices, búsqueda descendente con .., filtros con comparaciones y && || !, y las funciones length(), count(), match(), search() y value(). El estilo antiguo ?(@.price < 10) también funciona, porque los paréntesis solo agrupan.
› ¿Por qué mi consulta devuelve un array vacío?
Un array vacío significa que la consulta es válida pero no coincidió nada. Revisa los nombres de miembro (distinguen mayúsculas y minúsculas) y si un valor es un array o un objeto. Con una consulta amplia como $..* y Mostrar en Rutas verás qué contiene el documento.
› ¿Puedo usar expresiones de script como [(@.length-1)]?
No. Las expresiones de script ejecutan código arbitrario y no forman parte del estándar. Usa un índice negativo: [-1] es el último elemento y [-2:] los dos últimos.
› ¿Se envía mi JSON a un servidor?
No. La consulta se analiza y evalúa en tu navegador con el propio código de la página; no se sube nada.