¿Qué es JSONPath?
JSONPath es un lenguaje de consulta para JSON, análogo a XPath para XML. Una expresión JSONPath navega un documento JSON y devuelve uno o más valores que coinciden con la ruta especificada. La raíz de un documento se representa con $, las claves de objeto se acceden con notación de punto ($.user.name) o notación de corchetes, y los elementos de array por su índice o con un comodín ($.items[*]).
JSONPath es ampliamente usado en sistemas de configuración, puertas de enlace de API, marcos de prueba y tuberías de transformación de datos. AWS EventBridge usa JSONPath para filtrar eventos; Kubernetes lo usa para hacer coincidir objetos.
El lenguaje admite varios operadores poderosos: el operador de descenso recursivo (..) busca una clave en todos los niveles, las expresiones de filtro (?(...)) seleccionan elementos que satisfacen una condición, y el operador de fragmento funciona como el corte de Python en arrays.
Patrones JSONPath comunes
Notación de punto y corchetes: $.store.book[0].title recupera el título del primer libro. La notación de corchetes es necesaria cuando una clave contiene caracteres especiales.
Comodines y fragmentos: $.store.book[*].author devuelve todos los autores. $.store.book[-1:] devuelve solo el último elemento. $.store.book[0:3] devuelve los primeros tres elementos.
Descenso recursivo y filtros: $..price devuelve todos los valores de precio en cualquier nivel de anidación. $.store.book[?(@.price < 10)] devuelve todos los libros con un precio menor de 10.
JSONPath vs. JMESPath vs. jq
JSONPath (estandarizado en RFC 9535) es la notación de consulta JSON más ampliamente reconocida y es compatible nativamente en muchos lenguajes y plataformas.
JMESPath es usado por AWS CLI y SDKs. Tiene una gramática más formal y admite funciones integradas (sort_by, keys, values, length, contains).
jq es un procesador JSON de línea de comandos con su propio mini-lenguaje significativamente más poderoso, pero con una curva de aprendizaje más pronunciada. Nuestra herramienta JSONPath se enfoca en el estándar RFC 9535.