Probador de JSONPath, Prueba Expresiones JSONPath Online

Prueba expresiones JSONPath contra JSON en tu navegador. Coincidencias resaltadas en un árbol expandible, chuleta de sintaxis y ejemplos. Nada se sube.

🌐 English

JSON document

Try:

4 matches found.

Tree view

Object · 1 entry

Matches

$['store']['book'][0]['author']: "Nigel Rees"
$['store']['book'][1]['author']: "Evelyn Waugh"
$['store']['book'][2]['author']: "Herman Melville"
$['store']['book'][3]['author']: "J. R. R. Tolkien"
JSONPath syntax cheatsheet
$The root of the document.
.propertyA child property, e.g. $.store.bicycle. Bracket form also works: ['property'].
..propertyRecursive descent — that property at ANY depth in the document, not just directly under the current node.
*Wildcard — every property of an object, or every element of an array.
[n]The array element at 0-based index n. A single NEGATIVE index (e.g. [-1]) is not supported — use a slice like [-1:] instead.
[n,m]Multiple specific array indices at once, e.g. [0,2].
[start:end]An array slice (end exclusive). Negative bounds ARE supported here, e.g. [-1:] for "just the last element".
[?(expression)]A filter — keep only the elements for which the expression is truthy.
@Inside a filter expression, the current element being tested.

🔒 Privado por diseño: todo funciona localmente en tu navegador; nada se sube nunca a ningún servidor.

Cómo probar una expresión JSONPath

  1. Pega o edita tu JSON en el recuadro JSON document, un documento de ejemplo clásico (“bookstore”) se carga por defecto para que puedas probar la herramienta de inmediato.
  2. Escribe una expresión JSONPath en el recuadro JSONPath expression, la lista de coincidencias y la vista de árbol resaltada de abajo se actualizan en vivo, con cada pulsación de tecla.
  3. Haz clic en cualquiera de las consultas de ejemplo para probar una expresión real que ya funciona contra los datos de ejemplo, o abre la chuleta de sintaxis para una referencia rápida de $, .., *, [n], las porciones (slices) y los filtros.
  4. Cuando hayas encontrado lo que buscabas, copia la lista de coincidencias directamente o descárgala como .txt o .csv.

Por qué probar una expresión JSONPath antes de fijarla en tu código

Las expresiones JSONPath son compactas y es fácil equivocarse en un detalle, un punto mal colocado, una comparación de filtro que no coincide con nada en silencio, una consulta de descenso recursivo que devuelve muchas más cosas de las esperadas porque también encontró una propiedad con el mismo nombre en algún sitio no relacionado. Si estás a punto de pegar una expresión en una herramienta de pruebas de API, un motor de plantillas de configuración, una canalización de datos o una CLI del estilo de jq, ver exactamente qué coincide (y dónde, dentro del documento real) antes de darla por buena te ahorra una sesión de depuración real más adelante. La vista de árbol resaltada es justamente eso: en lugar de mirar fijamente un array JSON de resultados sin contexto, ves con precisión qué nodos coincidieron dentro del documento completo del que provienen.

Expresiones de filtro, evaluadas de forma segura

La parte más delicada de JSONPath es la sintaxis de filtro, expresiones como [?(@.price<10)] que se quedan solo con los elementos que cumplen una condición. Por debajo, esas expresiones tienen que evaluarse como código real y ejecutable, lo que históricamente ha hecho que algunas librerías de JSONPath recurran al eval de JavaScript o al constructor Function, una preocupación real de inyección de código para una herramienta que ejecuta cualquier expresión que alguien pegue, contra cualquier dato que también pegue. El motor subyacente de esta herramienta usa por defecto un evaluador de expresiones restringido y aislado en su lugar: sin eval, sin constructor Function, solo un pequeño intérprete que entiende comparaciones, lógica booleana y acceso a propiedades, y nada más. Las comparaciones, las comprobaciones de presencia de propiedad y las condiciones combinadas con &&/|| funcionan exactamente como cabría esperar, de forma segura.

Tu JSON nunca sale de tu dispositivo

Todo (analizar el documento, evaluar la expresión, construir la vista de árbol) se ejecuta con JavaScript normal del lado del cliente, dentro de tu propia pestaña del navegador. No se sube nada y no hay ningún viaje de ida y vuelta a un servidor, lo que aquí importa más que en la mayoría de herramientas: un documento JSON que estás depurando muy a menudo es una respuesta de API real, un archivo de configuración o una exportación con datos genuinamente sensibles, no un archivo de prueba desechable.

Usos habituales

Cómo funciona, en imágenes

Captura de pantalla de la herramienta Probador de JSONPath, Prueba Expresiones JSONPath Online con un documento JSON de ejemplo cargado a la izquierda y una expresión JSONPath evaluada contra él en vivo a la derecha, con los nodos coincidentes listados como resultados
Probador de JSONPath, Prueba Expresiones JSONPath Online en pleno proceso: un documento JSON de ejemplo cargado a la izquierda y una expresión JSONPath evaluada contra él en vivo a la derecha, con los nodos coincidentes listados como resultados.
Diagrama: dónde ocurre el trabajo en una página de SysFenix que no tiene ninguna entrada de archivo: la herramienta llega como JavaScript normal dentro de la página, calcula la respuesta en tu propio dispositivo y la muestra ahí mismo, de modo que la subida, la cola y el registro en servidor que necesita una herramienta online típica no ocurren nunca
Dónde ocurre el trabajo en una página de SysFenix que no tiene ninguna entrada de archivo: la herramienta llega como JavaScript normal dentro de la página, calcula la respuesta en tu propio dispositivo y la muestra ahí mismo, de modo que la subida, la cola y el registro en servidor que necesita una herramienta online típica no ocurren nunca.

Preguntas frecuentes

La interfaz (botones, etiquetas, la chuleta de sintaxis) aparece en inglés, ¿es un error?

No, es una limitación conocida y honesta, no un error de traducción. El análisis del JSON y la evaluación de la expresión JSONPath son completamente independientes del idioma y funcionan igual de bien con datos en español, incluyendo tildes y la ñ en claves y valores. Pero el componente interactivo (botones como "Load sample", la etiqueta "JSONPath expression", los textos de la chuleta de sintaxis y de las consultas de ejemplo) es un único componente compartido en inglés, usado sin cambios tanto en esta página como en la original.

¿Qué es JSONPath?

JSONPath es un lenguaje de consultas para JSON (la misma idea que XPath para XML) una expresión corta como $.store.book[*].author te permite extraer exactamente los valores que necesitas de un documento JSON sin escribir bucles ni encadenamientos opcionales a mano. Se usa para extraer datos de respuestas de API, filtrar archivos de configuración y escribir comprobaciones en herramientas de pruebas de API, entre muchos otros usos.

¿Funcionan las expresiones de filtro como [?(@.price<10)]?

Sí. Las expresiones de filtro (quedarse solo con los elementos donde una condición es verdadera) se evalúan con un motor de expresiones restringido y aislado (nunca con el eval real de JavaScript ni con el constructor Function), así que comparaciones como @.price<10, comprobaciones de presencia de propiedad como @.isbn, y condiciones combinadas como @.price<10 && @.category=='fiction' funcionan correctamente y de forma segura.

Por qué $.store.book[-1] no devuelve nada, si [-1] normalmente significa "el último elemento"

Es una particularidad real y verificada del motor JSONPath subyacente, no un error de esta página, un índice NEGATIVO simple como [-1] sencillamente no está implementado y no coincide con nada, en silencio. Un límite negativo en una porción (slice) sí funciona, así que usa [-1:] en su lugar, está incluido como una de las consultas de ejemplo con las que se puede hacer clic más abajo.

¿Se sube mi JSON a algún servidor?

No. Tanto el documento como la expresión se analizan y evalúan enteramente dentro de tu pestaña del navegador con JavaScript del lado del cliente, no hay subida ni procesamiento en un servidor. Esto importa aquí más que en la mayoría de herramientas, porque un documento JSON que se está depurando muy a menudo es una respuesta de API real o un archivo de configuración con datos en vivo.

Una expresión me parece incorrecta pero la herramienta solo muestra "sin coincidencias" en lugar de un error, ¿por qué?

Un error de sintaxis genuino (una expresión de filtro incompleta, por ejemplo) sí produce un mensaje de error claro y específico que nombra el problema. Pero el motor JSONPath subyacente es deliberadamente permisivo con otras entradas con aspecto incorrecto, un corchete sin cerrar o un carácter suelto no siempre provocan un error, simplemente pueden no encontrar ninguna coincidencia, así que "sin coincidencias" y "un error de sintaxis real" se muestran como dos estados honestamente distintos, en lugar de que uno se disfrace del otro.

Herramientas relacionadas