Saltar al contenido

Probador de JSONPath

JSONPath Tester

Ejecuta una expresión JSONPath sobre un documento y resalta los nodos que coinciden mientras escribes.

Ejecuta una consulta JSONPath contra un documento y muestra cada nodo que seleccionó, con la ruta a cada uno. Implementa RFC 9535 —el estándar de 2024— en lugar de una de las implementaciones mutuamente incompatibles de los veinte años anteriores, lo cual importa en cuanto tu consulta lleva un filtro.

🔒 Se ejecuta por completo en tu navegadorjsonjsonpathquerytest

Consulta

Desde la raíz: en cualquier punto por debajo, el miembro «book»; luego los hijos que pasan el filtro; luego el miembro «title».

Documento

Coincidencias

Los resultados aparecen aquí mientras escribes.

Esto sigue RFC 9535, el estándar de 2024, y no los veinte años de implementaciones incompatibles que lo precedieron. Las diferencias que se notan: un resultado es una lista de nodos y conserva los duplicados, .. visita un nodo antes que a sus hijos, un miembro ausente solo es igual a otro miembro ausente, y comparar contra una consulta que podría coincidir con varios nodos es un error de sintaxis en vez de una suposición. Los patrones que van dentro de match() y search() se entregan al motor de expresiones regulares del propio navegador, que acepta más de lo que especifica el dialecto I-Regexp del RFC.

Cómo se usa

  1. Pega el documento

    Cualquier cosa que se analice como JSON. La consulta corre en un worker, así que un documento grande mantiene la página ágil mientras escribes.

  2. Escribe la consulta, o parte de un ejemplo

    Los botones bajo el cuadro cubren las formas que la gente necesita: un comodín, una búsqueda de descendientes, un slice, un filtro, una expresión regular y una función. Encima de ellos aparece una descripción en lenguaje llano de lo que significa tu consulta.

  3. Lee las coincidencias con sus rutas

    Cada resultado lleva la ruta normalizada que llegó hasta él, así que puedes ver si una coincidencia vino de donde esperabas. La línea de estadísticas dice si la consulta es singular —capaz de seleccionar como mucho un nodo—, que es lo que sería un JSON Pointer.

Preguntas frecuentes

Mi consulta funciona en otra herramienta pero aquí no.

Probablemente una diferencia de RFC 9535. El estándar eliminó cosas que las implementaciones antiguas permitían: expresiones de script en `()`, `$..[?(@.x)]` con la sintaxis antigua de filtro entre paréntesis, y comparar contra una consulta que podría coincidir con varios nodos; esta última es ahora un error de sintaxis en lugar de una suposición.

¿Por qué el mismo valor aparece dos veces?

Porque el resultado es una lista de nodos, no un conjunto. `$..price` llegando al mismo nodo por dos ramas lo lista dos veces, a propósito: deduplicar perdería la información de dónde vino cada coincidencia.

¿Las expresiones regulares de `match()` son estándar?

No exactamente. El RFC especifica I-Regexp, un dialecto pequeño; los patrones de aquí se entregan al motor del propio navegador, que acepta más. Un patrón que funciona aquí puede ser rechazado por una implementación estricta, algo que conviene saber antes de ponerlo en producción.

¿Puede modificar el documento?

No: JSONPath selecciona, no escribe. Para editar, las rutas que se muestran aquí son punteros RFC 6901 y pueden ir directamente a un JSON Patch, que es lo que produce la herramienta de diff de JSON de este sitio.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.