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).
Habituellement, dans une requête SQL, une expression de chemin SQL/JSON est écrite sous la forme d'un littéral de chaîne de caractères SQL. Cela signifie que l'expression du chemin d'accès doit être placée entre guillemets simples. En outre, tous les guillemets simples souhaités dans la valeur doivent être doublés. Certaines formes d'expressions de chemin d'accès doivent contenir des chaînes de caractères. Les chaînes de caractères intégrées respectent les conventions JavaScript/ECMAScript:
  • 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 un guillemet double à l'intérieur d'une chaîne littérale intégrée, vous devez taper '\". Pour obtenir une barre oblique inverse, vous devez taper '\\.
D'autres séquences spéciales d'antislash sont reconnues dans les chaînes JSON :
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
La syntaxe de l'antislash comprend également deux cas non autorisés par JSON :
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...}
Une expression de chemin consiste en une séquence d'éléments de chemin, qui peuvent être :
  • 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 " vars de 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. subscript peut être donné sous deux formes : " index ou " 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_index et " end_index.
Le " index spécifié peut être un entier, ainsi qu'une expression renvoyant une seule valeur numérique, qui est automatiquement convertie en entier. L'indice zéro correspond au premier élément du tableau. Vous pouvez également utiliser le mot-clé last pour indiquer le dernier élément du tableau, ce qui est utile pour traiter les tableaux de longueur inconnue.
[*]
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