Cómo se usa
- Pegue el documento JSON en Documento JSON. Use el ejemplo para probar primero la herramienta.
- Escriba la Consulta JSONPath en el campo de debajo, empezando por $. Los filtros van entre corchetes: [[email protected] < 10].
- Lea el número de Coincidencias y después la tabla de Coincidencias, en orden: cada fila tiene la ruta de una coincidencia y su valor.
- Si un mensaje muestra la posición de un problema, mire ese carácter de la consulta y corrija los corchetes, las comillas o los puntos.
Cómo selecciona nodos una consulta
Una consulta es una lista de segmentos después de $. Un segmento hijo como .store o [0] selecciona los hijos de cada nodo al que llega, y un segmento descendiente como ..author visita el nodo y todos sus descendientes antes de seleccionar. Los nodos de un segmento aparecen en el orden de la entrada, y un array siempre se lee en su orden (RFC 9535, secciones 2.5 y 2.5.2.2).
Un selector de nombre coincide con un miembro con exactamente ese nombre, y solo en un objeto. Un índice negativo cuenta desde el final del array, así que -1 es el último elemento. Una rebanada como [1:5:2] toma el inicio, el final y el paso, y un paso de 0 no selecciona nada (sección 2.3.4.2).
Filtros, funciones y lo que la herramienta rechaza
Un filtro [?...] prueba cada hijo de un array o de un objeto. Las comparaciones usan ==, !=, <, <=, > y >=; &&, || y ! combinan pruebas, y los paréntesis las agrupan. Un miembro que falta es Nothing, y dos valores Nothing son iguales. Los números se comparan con números, los textos con textos, y un valor de un tipo nunca es igual a un valor de otro tipo (sección 2.3.5.2).
Las funciones length, count, value, match y search se admiten como las define la RFC 9535. match y search reciben una expresión regular escrita en I-Regexp, el formato de la RFC 9485; un patrón que no es I-Regexp válido no coincide con nada. Los literales de array y de objeto no forman parte de la gramática, así que la herramienta los rechaza, y también rechaza el resultado de una función usado solo en un filtro, porque la RFC 9535 dice que eso no está bien tipado.
El ejemplo de la librería
Con el documento de ejemplo y la consulta $.store.book[[email protected] < 10].title, los libros más baratos que 10 son el primero y el tercero. Sus títulos son las dos coincidencias de abajo, con la ruta normalizada de cada una.
| Ruta normalizada | Valor (JSON) |
|---|---|
| $['store']['book'][0]['title'] | "Sayings of the Century" |
| $['store']['book'][2]['title'] | "Moby Dick" |
Preguntas frecuentes
¿Por qué una consulta no devuelve nada si la clave existe?
Un selector de nombre solo coincide con un miembro de un objeto que tenga exactamente ese nombre, y la comparación distingue mayúsculas de minúsculas. Nunca coincide con un elemento de un array, así que use un índice o un comodín para un array.
¿Por qué 13 y "13" no son iguales en un filtro?
La RFC 9535 compara valores de tipos distintos como no iguales (sección 2.3.5.3). Un número y un texto son valores distintos, así que == es falso y != es verdadero, aunque los caracteres parezcan iguales.
¿Qué selecciona un índice negativo?
Un índice negativo cuenta desde el final del array: -1 es el último elemento y -2 el anterior. Un índice fuera del array no selecciona nada y no es un error (sección 2.3.3.2).
¿Por qué la herramienta rechaza length(@) cuando está sola en un filtro?
length devuelve un número, y un filtro necesita una prueba que sea verdadera o falsa. Compare el resultado, como en [?length(@.title) > 15], que sí está bien tipado.
¿La herramienta envía mi JSON a un servidor?
No. Su navegador lee el documento con JSON.parse, la consulta también se ejecuta allí, y nada se guarda. La página no hace ninguna petición de red.
Fuentes
- RFC 9535 (en inglés): JSONPath: Query Expressions for JSON, secciones 1.5, 2.3, 2.4, 2.5 y 2.7
- RFC 9485 (en inglés): I-Regexp: An Interoperable Regular Expression Format, secciones 3 y 5.3
Cifras y texto revisados por última vez el martes, 10 de noviembre de 2026.