En el software informático, JSONPath es un lenguaje de consulta para consultar valores en JSON . Los usos de JSONPath incluyen:
- Seleccionar un nodo específico en un valor JSON.
- Recuperar un conjunto de nodos de un valor JSON, basándose en criterios específicos.
- Navegar a través de valores JSON complejos para recuperar los datos necesarios.
Las consultas JSONPath son expresiones de ruta escritas como cadenas, por ejemplo $.foo:
Ejemplo
La expresión JSONPath se aplicó al siguiente valor JSON:$.store.books[0]
{ "tienda" : { "libros" : [ { "autor" : "Nigel Rees" , "título" : "Dichos del siglo" , "precio" : 8.95 }, { "autor" : "JRR Tolkien" , "título" : "El Señor de los Anillos" , "isbn" : "0-395-19395-8" , "precio" : 22.99 } ], "bicicleta" : { "color" : "rojo" , "precio" : 399 } } }Selecciona el primer libro (de Nigel Rees):
{ "autor" : "Nigel Rees" , "título" : "Dichos del siglo" , "precio" : 8,95 }La expresión extrae los precios de los libros: 8,95 y 22,99 (ya que selecciona todos los nodos de una matriz).$.store.books[*].price[*]
La expresión extrae todos los precios: 8,95, 22,99 y 399.$..price
Historia
JSONPath fue descrito por primera vez en un artículo en línea [ 1 ] por Stefan Gössner en febrero de 2007. Gössner también publicó implementaciones iniciales en JavaScript y PHP.
Posteriormente, se crearon más de cincuenta implementaciones en diversos lenguajes de programación. El Proyecto de Comparación de JSONPath enumera muchas de estas implementaciones y compara su comportamiento. [ 2 ] JSONPath se utiliza ampliamente en el ecosistema Java . [ 3 ]
En 2024, el IETF publicó una propuesta de estándar para JSONPath como RFC 9535. [ 4 ]
Investigación
- Procesamiento escalable de datos semiestructurados contemporáneos en procesadores paralelos comerciales: un enfoque basado en compilación [ 5 ] describe una optimización que convierte las consultas JSONPath en programas paralelos con requisitos de memoria limitados.
- Supporting Descendants in SIMD-Accelerated JSONPath [ 6 ] describe una optimización de las consultas de descendientes de JSONPath cuando se transmiten valores JSON potencialmente muy grandes.
- τJSONPath: Una extensión temporal del lenguaje JSONPath para el marco τJSchema [ 7 ] describe una extensión temporal de JSONPath que admite la consulta de las versiones de un valor JSON a lo largo de su historial de versiones.
Alternativas
- JMESPath [ 8 ] es un lenguaje de consulta para JSON con características que van mucho más allá de JSONPath. Tiene una especificación, un conjunto de pruebas de conformidad y múltiples implementaciones en varios lenguajes.
- JSONata [ 9 ] Un lenguaje de consulta y transformación de código abierto para datos JSON inspirado en XPath 3.1.
- JSON Pointer [ 10 ] define una sintaxis de cadena para identificar un único valor dentro de un valor JSON dado de estructura conocida.
- JSONiq [ 11 ] es un lenguaje de consulta y transformación para JSON.
- XPath 3.1 [ 12 ] es un lenguaje de expresiones que permite el procesamiento de valores conformes al modelo de datos XDM [ 13 ] . La versión 3.1 de XPath admite JSON y XML.
- jq es como sed para datos JSON: se puede usar para segmentar, filtrar, mapear y transformar datos estructurados.
- ZPath [ 14 ] es un lenguaje de consulta para datos estructurados, incluidos JSON, CBOR y XML.
Referencias
- ↑ Gössner, Stefan. "JSONPath - XPath para JSON" . Archivado del original el 11 de septiembre de 2007. Consultado el 22 de marzo de 2024 .
- ↑ Burgmer, Christoph. "Comparación de JSONPath" . Archivado del original el 3 de marzo de 2024. Recuperado el 22 de marzo de 2024 .
- ↑ Friesen, Jeff (11 de enero de 2019). "Extracción de valores JSON con JsonPath". Java XML y JSON: Procesamiento de documentos para Java SE (2.ª ed.). Apress. ISBN 978-1484243299.
- ↑ Gössner, Stefan; Normington, Glyn; Bormann, Carsten (febrero de 2024). "RFC 9535 JSONPath: expresiones de consulta para JSON" . La serie RFC . El Grupo de Trabajo de Ingeniería de Internet (IETF) . Recuperado el 22 de marzo de 2024 .
- ↑ Jiang, Lin; Sun, Xiaofan; Farooq, Umar; Zhao, Zhijia (abril de 2019). «Procesamiento escalable de datos semiestructurados contemporáneos en procesadores paralelos comerciales: un enfoque basado en compilación». Actas de la Vigésimo Cuarta Conferencia Internacional sobre Soporte Arquitectónico para Lenguajes de Programación y Sistemas Operativos . págs. 79–92 . doi : 10.1145/3297858.3304008 . ISBN 978-1-4503-6240-5.
- ↑ Gienieczko, Mateusz; Murlak, Filip; Paperman, Charles (febrero de 2024). "Soporte para descendientes en JSONPath acelerado por SIMD". Conferencia sobre soporte arquitectónico para lenguajes de programación y sistemas operativos . 4 .
- ↑ Brahmia, Zouhaier; Grandi, Fabio; Brahmia, Safa; Bouaziz, Rafik (2023). "τJSONPath: Una extensión temporal del lenguaje JSONPath para el marco τJSchema". Inteligencia artificial y entorno inteligente . Notas de clase en redes y sistemas. Vol. 635. págs. 844–853 . doi : 10.1007/978-3-031-26254-8_123 . ISBN 978-3-031-26253-1.
- ↑ Saryerwinnie, James. "JMESPath" . Archivado del original el 14 de marzo de 2024. Consultado el 23 de marzo de 2024 .
- ↑ Bailey, Matt. "JSONata" . Consultado el 25 de marzo de 2024 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Bryan, Paul; Zyp, Kris; Nottingham, Mark (abril de 2013). "RFC 6901 JavaScript Object Notation (JSON) Pointer" . The RFC Series . The Internet Engineering Task Force (IETF) . Consultado el 23 de marzo de 2024 .
- ↑ "JSONiq" . Archivado del original el 13 de enero de 2024. Consultado el 23 de marzo de 2024 .
- ↑ Robie, Jonathan; Dyck, Michael; Spiegel, Josh. "XML Path Language (XPath) 3.1" . w3c.org . Archivado del original el 18 de enero de 2024. Consultado el 24 de marzo de 2024 .
- ↑ Tovey-Walsh, Norman; Snelson, John; Coleman, Andrew. "XQuery y XPath Data Model" . w3c.org . Archivado del original el 18 de enero de 2024. Consultado el 24 de marzo de 2024 .
- ↑ "ZPath" .
Enlaces externos
- RFC 9535
- JSON
- Lenguajes de consulta