jsonPath
jsonpath implementa soporte para el lenguaje de rutas SQL/JSON en PostgreSQL para consultar datos JSON. Proporciona una representación binaria de la expresión de ruta SQL/JSON analizada que especifica los elementos que el motor de rutas debe recuperar de los datos JSON para su posterior procesamiento con las funciones de consulta SQL/JSON. La semántica de los predicados y operadores de ruta de SQL/JSON generalmente sigue a SQL. La sintaxis de la ruta SQL/JSON utiliza algunas de las convenciones JavaScript:- Se utiliza un punto (
.) para el acceso de los miembros. - Los corchetes (
[]) se utilizan para acceder a la matriz. - Las matrices SQL/JSON son 0-relativas (a diferencia de las matrices SQL normales que empiezan por 1).
- Deben ir entre comillas dobles.
- Se pueden utilizar barras diagonales inversas para representar caracteres difíciles de escribir.
\". Para obtener una barra invertida, debe escribir ' \\.- Para varios caracteres de control ASCII
\b\f\n\r\t\v
- Para un carácter Unicode identificado por su punto de código de 4 hexadecimales
\uNNNN
- Para un código de caracteres escrito con sólo dos dígitos hexadecimales
\xNN
- Para un código de carácter escrito con 1 a 6 dígitos hexadecimales
\u{N...}
- Literales de ruta de tipos primitivos JSON: Texto Unicode, numérico, verdadero, falso o nulo.
- Variables de trayectoria.
- Operadores de acceso.
- operadores y métodos
jsonpath', que puede utilizar para proporcionar expresiones de filtro o definir el orden de evaluación de las rutas.
variables jsonpath
- $
- Una variable que representa el texto JSON que se va a consultar (el elemento de contexto).
- $varname
- Una variable con nombre. Puede establecer el valor mediante el parámetro '
vars' de varias funciones de procesamiento JSON. - @
- Variable que representa el resultado de la evaluación de la ruta en las expresiones de filtro.
accesores jsonpath
- .clave
- ."$varname"
- Un accesorio que devuelve un objeto miembro con la clave especificada. Si el nombre de la clave es una variable con nombre que empieza por $ o no cumple las reglas de JavaScript de un identificador, debe ir entre comillas dobles como una cadena de caracteres literal.
- .*
- Accesor de miembros comodín que devuelve los valores de todos los miembros situados en el nivel superior del objeto actual.
- .**
- Un accesor de miembro comodín recursivo que procesa todos los niveles de la jerarquía JSON del objeto actual y devuelve todos los valores de miembro, independientemente de su nivel de anidamiento. Se trata de una extensión PostgreSQL del estándar SQL/JSON.
- .**{level}
- .**{start_level to end_level}
- Igual que .**, pero con un filtro sobre los niveles de anidamiento de la jerarquía JSON. Los niveles de anidamiento se especifican como números enteros. El nivel cero corresponde al objeto actual. Para acceder al nivel de anidamiento más bajo, puede utilizar la palabra clave last. Se trata de una extensión PostgreSQL del estándar SQL/JSON.
- [subíndice, ...]
- Un accesor de elementos de array.
subscriptpuede darse de dos formas: "indexo "start_index" a "end_index. La primera forma devuelve un único elemento de la matriz por su índice. The second form returns an array slice by the range of indexes, including the elements that correspond to the providedstart_indexandend_index. - [*]
- Un accesor de elementos de array comodín que devuelve todos los elementos del array.
El lenguaje de rutas SQL/JSON
De forma similar a las expresiones ' XPath ' que se utilizan para el acceso ' SQL a XML, las expresiones de ruta ' SQL/JSON ' especifican qué elementos recuperar de los datos ' JSON.
En PostgreSQL,, las expresiones de ruta se implementan como el tipo de datos ' jsonpath. Pueden utilizar cualquier elemento descrito en jsonpath.
las funciones y operadores de consulta JSON ' pasan la expresión de ruta proporcionada al motor de rutas para su evaluación. Si la expresión coincide con los datos JSON consultados, se devuelve el elemento SQL/JSON correspondiente.
Las expresiones de ruta se escriben en el lenguaje de rutas SQL/JSON. Pueden incluir expresiones aritméticas y funciones. La expresión proporcionada debe ir entre comillas simples, ya que las funciones de consulta tratan dicha expresión como una cadena de texto.
Una expresión de ruta está formada por una secuencia de elementos permitidos por ' jsonpath. La expresión de la ruta se evalúa de izquierda a derecha. Puede utilizar paréntesis para cambiar el orden de las operaciones. Si la evaluación tiene éxito, se produce una secuencia SQL/JSON. El resultado de la evaluación se devuelve a la función de consulta JSON que completa el cálculo especificado.
Para hacer referencia al elemento contextual (datos JSON que se van a consultar), puede utilizar el signo ' $ en la expresión de la ruta. Puedes seguir el signo con uno o más accesores jsonpath. Descienden por la estructura JSON nivel por nivel para recuperar el contenido del elemento contextual. Cada operador siguiente trata el resultado del paso de evaluación anterior.
Para más información sobre los operadores y métodos ' jsonpath ', véase jsonpath