Consulta JSONPath
JSONEjecuta consultas JSONPath / estilo jq sobre un documento JSON y resalta cada coincidencia.
No se recuperan URLs remotas; pega tu JSON directamente.
En esta página
¿Qué es un probador de JSONPath?#
Cuando un documento JSON es pequeño, lo lees con los ojos. Cuando tiene unos miles de líneas —una respuesta de API, un volcado de configuración, un árbol de dependencias—, tus ojos dejan de ser la herramienta adecuada. JSONPath es el lenguaje de consultas para esa situación: una expresión compacta que dice «dame todos los campos price», o «los títulos de los libros más baratos que 10», o «todos los nodos llamados isbn sin importar lo profundo que estén enterrados».
Piensa en ello como un cruce entre una ruta de archivo y un pequeño lenguaje de filtrado. $.store.book[0].title desciende por una estructura conocida igual que una ruta de sistema de ficheros. $..author dice «desciende recursivamente y recoge cada author que encuentres». [?(@.price < 10)] es un filtro: conserva solo los elementos en los que el price del nodo actual es menor que diez. La @ significa siempre «el nodo que estoy mirando ahora».
Esta página ejecuta una expresión JSONPath sobre tu JSON, enumera cada coincidencia y —la parte que más tiempo ahorra— resalta los rangos coincidentes directamente sobre el documento formateado, para que veas de un vistazo si tu expresión seleccionó lo que tú creías que seleccionaba. Los filtros se evalúan con un analizador de expresiones seguro, nunca ejecutando código, así que un bloque hostil no puede ejecutar nada.
Cómo usarlo#
- Pega tu JSON en el panel de Entrada a la izquierda, o pulsa Ejemplo para cargar el clásico fixture de la librería.
- Escribe una expresión JSONPath en el campo JSONPath de la derecha. Puntos de partida habituales:
$.store.book[*].author— elauthorde cada elemento del array.$..author— descenso recursivo: cadaauthor, en cualquier lugar.$.store.book[?(@.price < 10)].title— una expresión de filtrado.$.store.book[?(@.isbn)].isbn— una prueba de existencia (tiene una claveisbn).
- La lista de coincidencias bajo el campo se rellena con una entrada por resultado, y la previsualización JSON a todo lo ancho debajo resalta cada tramo coincidente en su sitio.
- La cabecera junto a Coincidencias muestra el conteo. Una expresión que coincida con cero nodos sigue reportando éxito (lista vacía): solo una expresión rota sintácticamente muestra un error.
- Pulsa Copiar coincidencias en la barra de herramientas para llevarte los valores coincidentes como un array JSON, o Limpiar para vaciar ambos paneles.
Las consultas se disparan mientras escribes. Si el propio JSON no es válido, la barra de estado señala la fila y la columna exactas que corregir.
Características principales#
- Resaltado in situ. Cada valor coincidente se superpone al documento formateado, así que un
$..recursivo que captura treinta nodos es visible al instante en vez de enterrado en una lista. - Evaluación de filtros segura. Expresiones como
[?(@.price < 10)]las analiza un evaluador de expresiones, no se delegan a ejecución dinámica de código: la página se mantiene segura para CSP incluso con entrada hostil. - Distingue «sin coincidencias» de «error». Una expresión válida que no selecciona nada se reporta como cero coincidencias; solo una expresión mal formada se marca como error. Nunca confundes «no encontré nada» con «lo rompí».
- Puntero por coincidencia. Cada resultado lleva su JSON Pointer (por ejemplo
/store/book/2/title), así sabes exactamente de dónde del árbol salió un valor. - Copia como array. Los valores coincidentes se exportan como un array JSON limpio, listos para encadenarlos con el siguiente paso.
- Solo local. Tus datos se consultan en el navegador. No hay backend ni subida.
Ejemplo detallado#
Carga Ejemplo y después ejecuta un filtro que encuentre los títulos de los libros baratos. Introduce esto en el campo JSONPath:
$.store.book[?(@.price < 10)].title
La lista de coincidencias devuelve dos títulos, porque solo dos de los cuatro libros del fixture cuestan menos de 10:
[
"Sayings of the Century",
"Moby Dick"
]
La previsualización JSON resalta esos dos valores title en su sitio, y puedes ver por qué se excluyeron los otros dos: Sword of Honour (12.99) y The Lord of the Rings (22.99) están por encima del umbral. Cambia a una prueba de existencia para averiguar qué libros llevan ISBN:
$.store.book[?(@.isbn)].isbn
Eso devuelve las dos cadenas ISBN y nada más, porque el filtro conserva solo los elementos que realmente tienen una clave isbn: un patrón práctico para averiguar «qué registros carecen de un campo» negándolo.
Preguntas frecuentes#
¿Cuál es la diferencia entre $ y @?#
$ es la raíz del documento, el valor JSON entero que pegaste. @ es el nodo actual que se considera dentro de un filtro. Así, en [?(@.price < 10)], la @ se refiere al libro que el filtro está probando en ese momento; escribir $.price ahí saltaría de vuelta a la raíz y buscaría un price de nivel superior que no existe.
Mi expresión no coincide con nada. ¿Es un fallo?#
Probablemente no. Una expresión válida que selecciona cero nodos es una consulta con éxito y un resultado vacío —por ejemplo, $.store.book[?(@.price > 1000)] sobre el ejemplo simplemente significa que ningún libro es tan caro. La cabecera muestra «0 coincidencias» sin error. Solo cuando la expresión en sí es imposible de analizar la página reporta un error.
¿Por qué un filtro no ejecuta JavaScript arbitrario?#
Los filtros los evalúa un analizador de expresiones dedicado que entiende comparaciones, operadores booleanos y referencias a @: nunca construye ni ejecuta código. Es deliberado: mantiene la herramienta segura para apuntarla a JSON en el que no confías plenamente, y mantiene la página dentro de la política de seguridad de contenidos del navegador.
¿Puede JSONPath editar o eliminar nodos?#
No: es una herramienta de consulta de solo lectura. Selecciona y muestra, no muta tu JSON. Si lo que quieres es ver cómo difieren dos documentos, acude a la herramienta /en/json/diff/.