Articulo de referencia

Ruta JSON

2024 (standardized)"},"designer":{"wt":"Stefan Gössner"},"developer":{"wt":"Stefan Gössner"},"latest_release_version":{"wt":""},"latest_release_date":{"wt":"{{Start date and age...

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

  1. Gössner, Stefan. "JSONPath - XPath para JSON" . Archivado del original el 11 de septiembre de 2007. Consultado el 22 de marzo de 2024 .
  2. Burgmer, Christoph. "Comparación de JSONPath" . Archivado del original el 3 de marzo de 2024. Recuperado el 22 de marzo de 2024 .
  3. 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.
  4. 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 .
  5. 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.
  6. 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 .
  7. 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.
  8. Saryerwinnie, James. "JMESPath" . Archivado del original el 14 de marzo de 2024. Consultado el 23 de marzo de 2024 .
  9. Bailey, Matt. "JSONata" . Consultado el 25 de marzo de 2024 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  10. 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 .
  11. "JSONiq" . Archivado del original el 13 de enero de 2024. Consultado el 23 de marzo de 2024 .
  12. 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 .
  13. 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 .
  14. "ZPath" .