jsonPath
jsonpath implémente le support du langage SQL/JSON dans PostgreSQL pour l'interrogation des données JSON. Il fournit une représentation binaire de l'expression de chemin SQL/JSON analysée qui spécifie les éléments qui doivent être récupérés par le moteur de chemin à partir des données JSON pour un traitement ultérieur avec les fonctions de requête SQL/JSON. La sémantique des prédicats et des opérateurs de chemin SQL/JSON suit généralement celle de SQL. La syntaxe du chemin SQL/JSON utilise certaines conventions JavaScript:- Un point (
.) est utilisé pour l'accès des membres. - Les crochets (
[]) sont utilisés pour l'accès aux tableaux. - Les tableaux SQL/JSON sont relatifs à 0 (contrairement aux tableaux SQL ordinaires qui commencent à 1).
- Ils doivent être entourés de guillemets.
- Des barres obliques inversées peuvent être utilisées pour représenter des caractères difficiles à taper.
\". Pour obtenir une barre oblique inverse, vous devez taper '\\.- Pour divers caractères de contrôle ASCII
\b\f\n\r\t\v
- Pour un caractère Unicode identifié par son point de code à 4 chiffres hexadécimaux
\uNNNN
- Pour un code de caractère écrit avec seulement deux chiffres hexadécimaux
\xNN
- Pour un code de caractère écrit avec 1 à 6 chiffres hexadécimaux
\u{N...}
- Littérales de chemin d'accès de types primitifs JSON : Texte Unicode, numérique, vrai, faux ou nul.
- Variables de cheminement.
- Opérateurs d'accès.
- les opérateurs et méthodes
jsonpath, que vous pouvez utiliser pour fournir des expressions de filtrage ou définir l'ordre d'évaluation des chemins.
variables jsonpath
- $
- Une variable qui représente le texte JSON à interroger (l'élément de contexte).
- $varname
- Une variable nommée. Vous pouvez définir la valeur du paramètre "
varsde plusieurs fonctions de traitement JSON. - @
- Une variable qui représente le résultat de l'évaluation du chemin dans les expressions de filtre.
accesseurs jsonpath
- .clé
- . "$varname"
- Un accesseur de membre qui renvoie un membre d'objet avec la clé spécifiée. Si le nom de la clé est une variable nommée commençant par $ ou ne répond pas aux règles JavaScript d'un identifiant, il doit être placé entre guillemets doubles en tant que chaîne de caractères littérale.
- .*
- Un accesseur de membre avec caractère de remplacement qui renvoie les valeurs de tous les membres situés au niveau supérieur de l'objet actuel.
- .**
- Un accesseur de membre récursif qui traite tous les niveaux de la hiérarchie JSON de l'objet actuel et renvoie toutes les valeurs de membre, quel que soit leur niveau d'imbrication. Il s'agit d'une extension PostgreSQL du standard SQL/JSON.
- .**{level}
- .**{start_level to end_level}
- Identique à .**, mais avec un filtre sur les niveaux d'imbrication de la hiérarchie JSON. Les niveaux d'imbrication sont spécifiés sous forme de nombres entiers. Le niveau zéro correspond à l'objet actuel. Pour accéder au niveau d'imbrication le plus bas, vous pouvez utiliser le mot-clé last. Il s'agit d'une extension PostgreSQL du standard SQL/JSON.
- [indice, ...]
- Un accesseur d'élément de tableau.
subscriptpeut être donné sous deux formes : "indexou "start_indexà "end_index. La première forme renvoie un seul élément de tableau par son index. La deuxième forme renvoie un tableau divisé par la plage d'indices, y compris les éléments correspondant aux codes fournis "start_indexet "end_index. - [*]
- Un accesseur d'éléments de tableau avec caractère de remplacement qui renvoie tous les éléments du tableau.
Le langage de parcours SQL/JSON
De même que les expressions " XPath utilisées pour l'accès " SQL à XML, les expressions de chemin " SQL/JSON spécifient les éléments à extraire des données " JSON.
Dans PostgreSQL, expressions de chemin sont implémentées en tant que type de données " jsonpath Ils peuvent utiliser tous les éléments décrits dans jsonpath.
les fonctions et opérateurs de requête JSON transmettent l'expression du chemin fournie au moteur de chemin pour évaluation. Si l'expression correspond aux données JSON interrogées, l'élément SQL/JSON correspondant est renvoyé.
Les expressions de chemin sont écrites dans le langage de chemin SQL/JSON. Elles peuvent inclure des expressions arithmétiques et des fonctions. L'expression fournie doit être placée entre guillemets simples, car les fonctions de requête traitent cette expression comme une chaîne de texte.
Une expression de chemin est constituée d'une séquence d'éléments autorisés par " jsonpath. L'expression du chemin est évaluée de gauche à droite. Vous pouvez utiliser des parenthèses pour modifier l'ordre des opérations. Si l'évaluation est réussie, une séquence SQL/JSON est produite. Le résultat de l'évaluation est renvoyé à la fonction de requête JSON qui termine le calcul spécifié.
Pour faire référence à l'élément de contexte (données JSON à interroger), vous pouvez utiliser le signe " $ dans l'expression du chemin. Vous pouvez suivre le signe avec un ou plusieurs accesseurs jsonpath. Ils descendent la structure JSON niveau par niveau pour récupérer le contenu de l'élément de contexte. Chaque opérateur qui suit traite le résultat de l'étape d'évaluation précédente.
Pour plus d'informations sur les opérateurs et méthodes " jsonpath, voir jsonpath