JSONPath Tester

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
JSON
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand JSONPath Tester

JSONPath es un lenguaje de consulta para JSON, y este probador ejecuta una expresión contra sus datos y devuelve todos los valores que encuentra.

How it works

Una expresión empieza en $, la raíz del documento, y cada paso reduce el conjunto de valores que se arrastra: .name y ['name'] toman una clave, [2] toma un elemento del array y un índice negativo cuenta desde el final, * toma todos los hijos, ..name busca esa clave en todos los niveles y [?(@.price < 10)] conserva los elementos del array cuyo campo cumple la comparación. El resultado es siempre una lista, y una lista vacía es una respuesta válida y no un error.

When to use it

  • Extraer un campo de una respuesta de API muy anidada sin escribir el recorrido a mano.
  • Averiguar la expresión correcta antes de ponerla en un archivo de configuración: Kubernetes, Jenkins, las pruebas de Postman y muchas herramientas de logs aceptan JSONPath.
  • Contar cuántos elementos de una respuesta cumplen una condición.
  • Encontrar todas las apariciones de una clave cuando no sabe en qué parte del documento está.

Watch out for

  • Un filtro admite una sola comparación. [?(@.price < 10 && @.stock > 0)] no está soportado, y los filtros se aplican a arrays: ejecutar uno contra un objeto no encuentra nada.
  • La sintaxis de rebanado no está soportada y falla en silencio en lugar de avisar: [0:2] se lee como el índice 0 y devuelve un único elemento.
  • El descenso recursivo encuentra más de lo que espera. $..id devuelve todos los id de todas las profundidades, incluidos los que están dentro de objetos anidados sin relación, en el orden del documento.
  • JSONPath no tuvo un estándar formal hasta el RFC 9535, en 2024, así que las implementaciones discrepan en los casos límite. Una expresión que funciona aquí puede comportarse de otro modo en Jayway, en jsonpath-plus o en el campo de consulta de un proveedor de nube: pruébela allí donde vaya a ejecutarse de verdad.

Not the right tool for: Transformar datos. JSONPath selecciona valores; darles otra forma dentro de un documento nuevo es para lo que existen jq y JMESPath.

Frequently Asked Questions

¿Cuál es la diferencia entre $.store.book[*].title y $..title?

$.store.book[*].title recorre una ruta concreta y obtiene los títulos del array book. $..title usa el descenso recursivo (..) para encontrar TODAS las claves "title" en cualquier parte del documento y a cualquier nivel de anidamiento. El descenso recursivo es potente, pero puede devolver resultados inesperados en documentos complejos.

¿Cómo funcionan las expresiones de filtro?

Las expresiones de filtro usan la sintaxis [?(@.clave operador valor)]: $..book[?(@.price < 10)] encuentra todos los libros con precio inferior a 10. Operadores: == != < <= > >=. El símbolo @ se refiere al elemento que se está evaluando.

¿JSONPath está estandarizado?

JSONPath lo propuso Stefan Goessner en 2007, pero no tuvo un estándar formal hasta el RFC 9535 (2024). Las distintas implementaciones tienen diferencias sutiles. Esta herramienta implementa el subconjunto común de Goessner, compatible con la mayoría de bibliotecas (jsonpath-plus, Jayway, json-path).

How to Use JSONPath Tester

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.