Probador de JSONPath

Pega un documento JSON y escribe una expresión JSONPath como $..book[?(@.price<10)]. El probador la evalúa contra el documento y muestra cada valor coincidente, con la ruta exacta de cada coincidencia. Útil para validar la consulta que estás a punto de pegar en un script o en una especificación de API (Postman, k6, JMeter todos hablan JSONPath).

Cómo probar una expresión JSONPath

  1. 1

    Pega el documento JSON

    Cualquier JSON válido, objeto, array, profundamente anidado.

  2. 2

    Escribe la expresión

    Comienza con `$` para la raíz. Usa `.` para hijo, `..` para descenso recursivo, `[*]` para comodín.

  3. 3

    Ve las coincidencias en vivo

    Cada coincidencia se muestra con su valor y JSONPath completo, resaltado en el documento original.

  4. 4

    Copia los resultados

    Copia coincidencias como un array JSON, o copia cada ruta individual para usar en código posterior.

Referencia de sintaxis JSONPath

Expresión Significado
$ Elemento raíz
$.store Hijo de $ llamado store
$["store"] Lo mismo, forma de corchetes
$..author Todas las propiedades author a cualquier profundidad
$.store.book[*] Cada libro en la tienda
$.store.book[0] Primer libro
$.store.book[-1:] Último libro
$.store.book[0:2] Primeros dos libros (corte)
$.store.book[?(@.isbn)] Libros con una propiedad isbn
$.store.book[?(@.price < 10)] Libros más baratos que 10
$.store.book[?(@.category == "fiction")] Libros de ficción
$..* Cada valor, en todas partes

Expresiones de filtro

Las expresiones de filtro usan @ para referirse al nodo actual. El probador soporta los operadores comunes ==, !=, <, >, <=, >=, &&, ||, y regex =~.

$.items[?(@.qty >= 10 && @.price < 50)]

Dialectos de JSONPath

Hay varias implementaciones de JSONPath con pequeñas incompatibilidades. Este probador sigue la especificación original de Goessner y las refinaciones de RFC 9535, que son compatibles con:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • expresiones de ruta básicas de jq

Las características incompatibles (como expresiones de script con JS arbitrario) se señalan en el panel de errores.

Cuándo JSONPath supera a un analizador completo

  • Afirmaciones de prueba: pm.expect(jsonData).to.have.jsonPath(...) de Postman toma una ruta.
  • Extracción de configuración: extrae un valor de una enorme respuesta de API sin una biblioteca.
  • Scripts de prueba de carga: k6, JMeter y Gatling todos soportan JSONPath para verificaciones.
  • Kubernetes / AWS CLI: las banderas --query y --jsonpath te permiten dar forma a la salida desde la línea de comandos.

Errores comunes

  • Usar . en un array. $.users.0.name es incorrecto; usa $.users[0].name.
  • Olvidar .. para profundidad. Una ruta como $.name solo coincide con el name de nivel superior; usa $..name para todos.
  • Confundir JSONPath con jq. jq es un superconjunto con flujo de control y transformaciones; JSONPath es puramente para extracción.
  • Anclaje de regex. =~ /foo/ coincide con subcadenas; usa /^foo$/ para un comportamiento de coincidencia exacta.

Preguntas frecuentes

JSONPath es un lenguaje de extracción puro, seleccionar, filtrar, cortar. jq es un lenguaje completo de consulta / transformación con flujo de control, variables y funciones. Para extracción simple, JSONPath es más portátil; para transformaciones, usa jq.

La especificación original de Goessner más las refinaciones de RFC 9535, que coinciden con Jayway JsonPath (Java) y jsonpath-plus (Node). Las extensiones específicas del dialecto (expresiones de script con código arbitrario) no son compatibles.

Sí. $..book[?(@.title =~ /^Harry.*/)] coincide con todos los libros cuyo título comienza con “Harry”. Usa ^ y $ para un comportamiento de coincidencia completa.

Sí. Tanto el JSON como el evaluador JSONPath viven en tu navegador. Tu documento y consultas nunca salen de la pestaña.

Herramientas relacionadas

Herramienta disponible en otros idiomas