Probador de JSONPath
Prueba expresiones JSONPath sobre tu propio JSON en el navegador. Filtros, slices, descenso recursivo, rutas y JSON Pointers, con ejemplos listos para usar.
Cómo probar una expresión JSONPath
- Pega tu JSON en Datos JSON o haz clic en Cargar datos de ejemplo para usar el clásico ejemplo de la librería (store/book).
- Escribe una expresión en Expresión JSONPath o elige una en Ejemplos.
- El resultado se actualiza mientras escribes; Ejecutar la consulta lo vuelve a lanzar. La línea de estado indica el número de coincidencias.
- Usa Mostrar para cambiar entre Valores, Rutas, JSON Pointers y Rutas y valores, y copia el resultado.
La sintaxis de JSONPath en resumen
| Sintaxis | Significado | Ejemplo |
|---|---|---|
$ |
la raíz del documento | $ |
.name o ['name'] |
un hijo | $.store.bicycle |
* |
todos los hijos | $.store.* |
.. |
descenso recursivo, a cualquier profundidad | $..author |
[n] |
índice de array, desde 0 | $..book[2] |
[inicio:fin:paso] |
slice; los números negativos cuentan desde el final | $..book[-1:] |
[a,b] |
unión | $..book[0,1] |
[?(expr)] |
filtro | $..book[?(@.price < 10)] |
^ |
el padre de cada coincidencia | $..book[?(@.price > 20)]^ |
~ |
el nombre de la propiedad en lugar del valor | $.store.*~ |
Los resultados se devuelven en el orden del documento. Rutas da rutas normalizadas como $['store']['book'][0]['title'], y JSON Pointers da la forma del RFC 6901 /store/book/0/title, práctica para JSON Patch o para las rutas de error de los validadores de JSON Schema.
Expresiones de filtro: qué se admite
Los filtros se evalúan con jsonpath-plus en modo seguro: la expresión la analiza e interpreta un pequeño evaluador, y nunca se pasa a eval ni a new Function. Dentro de [?( … )] puedes usar:
@para el elemento actual,@.fieldy@['field']para sus miembros,@rootpara el documento completo ($no está disponible dentro de un filtro);- las comparaciones
==,!=,===,!==,<,<=,>,>=; - la lógica
&&,||,!, la aritmética+ - * / %y el ternarioa ? b : c; - literales de cadena, número,
true,false,nully expresiones regulares; - métodos de los propios valores, por ejemplo
@.title.startsWith('S'),@.tags.includes('new')o@.title.match(/lord/i); @property(la clave o el índice del elemento actual),@parenty@path(su ruta normalizada), al estilo de jsonpath-plus.
El acceso a constructor, __proto__ y al constructor Function está bloqueado. Si un filtro falla en un elemento, por ejemplo @.isbn.startsWith('0') en un libro sin isbn, ese elemento simplemente no coincide; un error de sintaxis en la expresión sí se indica. Los filtros escritos al estilo del RFC 9535, [?@.price < 10] sin paréntesis, se aceptan y se interpretan como [?(@.price < 10)]. Las funciones del RFC 9535 como length(), count(), match() y search() no están disponibles: usa en su lugar métodos de JavaScript como @.name.length.
Los selectores de tipo de jsonpath-plus también funcionan al final de una ruta: $..*@number() devuelve todos los números, y @string(), @boolean(), @array(), @object(), @null() e @integer() hacen lo mismo con los demás tipos.
Preguntas frecuentes
¿Se envía mi JSON a un servidor?
No. El análisis y la evaluación se hacen en tu navegador, y tus datos nunca salen de tu ordenador.
¿Por qué mi filtro no devuelve nada?
Comprueba que la ruta anterior al filtro seleccione un array o un objeto: $.store.book[?(@.price < 10)] filtra los libros, mientras que $.store[?(@.price < 10)] examina book y bicycle. Una propiedad que falta en un elemento es undefined, así que las comparaciones con ella son falsas.
¿Qué diferencia hay entre `==` y `===`?
Como en JavaScript, == convierte los tipos ("10" == 10 es verdadero), mientras que === compara tipo y valor.
¿Por qué está limitado el resultado?
Solo se escriben en el resultado las primeras 10 000 coincidencias, para que la página siga respondiendo; la línea de estado indica el recuento completo.
¿Está estandarizado JSONPath?
Sí, desde 2024, con el RFC 9535. Las implementaciones siguen difiriendo, sobre todo en los filtros; esta herramienta sigue jsonpath-plus, la sintaxis del JSONPath original de Stefan Goessner.
Herramientas relacionadas
- Formateador y validador JSON Formateador y validador JSON gratuito que embellece, minifica y comprueba JSON en tu navegador, con los errores de sintaxis indicados por línea y columna.
- Validador de JSON Schema Valida un documento JSON con un JSON Schema en tu navegador. Cada error aparece con su ruta en el documento, su palabra clave y su ruta en el schema.
- Probador de expresiones regulares Prueba expresiones regulares de JavaScript en directo con coincidencias resaltadas, grupos de captura, reemplazo y una explicación de cada elemento.