Expressions de chemin JSON (SQL Server)
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (pool SQL serverless uniquement)
Utilisez les expressions de chemins JSON pour référencer les propriétés des objets JSON.
Vous devez fournir une expression de chemin lorsque vous appelez les fonctions suivantes.
Lorsque vous appelez OPENJSON pour créer une vue relationnelle des données JSON. Pour plus d’informations, consultez OPENJSON (Transact-SQL).
Quand vous appelez JSON_VALUE pour extraire une valeur de texte JSON. Pour plus d’informations, consultez JSON_VALUE (Transact-SQL).
Quand vous appelez JSON_QUERY pour extraire un tableau ou un objet JSON. Pour plus d’informations, consultez JSON_QUERY (Transact-SQL).
Quand vous appelez JSON_MODIFY pour mettre à jour la valeur d’une propriété dans une chaîne JSON. Pour plus d’informations, consultez JSON_MODIFY (Transact-SQL).
Parties d’une expression de chemin
Une expression de chemin comporte deux composants.
mode PATH
Au début de l’expression de chemin, vous pouvez éventuellement déclarer le mode PATH en spécifiant le mot clé lax ou strict. La valeur par défaut est lax.
En mode lax, la fonction retourne des valeurs vides si l’expression de chemin contient une erreur. Par exemple, si vous demandez la valeur $.name et si le texte JSON ne contient pas de clé name, la fonction retourne une valeur null mais ne génère pas d’erreur.
En mode strict, la fonction génère une erreur si l’expression de chemin contient une erreur.
La requête suivante spécifie explicitement le mode lax
dans l’expression de chemin.
DECLARE @json NVARCHAR(MAX);
SET @json=N'{ ... }';
SELECT * FROM OPENJSON(@json, N'lax $.info');
Chemin d’accès
Après la déclaration de mode de chemin facultatif, spécifiez le chemin lui-même.
Le signe dollar (
$
) représente l’élément de contexte.Le chemin de la propriété est un ensemble d’étapes de chemin. Les étapes de chemin peuvent contenir les éléments et les opérateurs suivants.
Noms de clés. Par exemple :
$.name
et$."first name"
. Si le nom de clé commence par un signe dollar ou contient des caractères spéciaux tels que des espaces ou des opérateurs point (.
), placez-le entre guillemets.Éléments du tableau. Par exemple :
$.product[3]
. Les tableaux sont de base zéro.L’opérateur point (
.
) indique un membre d’un objet. Par exemple, dans$.people[1].surname
,surname
est un enfant depeople
.
Exemples
Les exemples de cette section font référence au texte JSON suivant.
{
"people": [{
"name": "John",
"surname": "Doe"
}, {
"name": "Jane",
"surname": null,
"active": true
}]
}
Le tableau suivant présente des exemples d’expressions de chemin.
Expression de chemin | Valeur |
---|---|
$.people[0].name | John |
$.people[1] | { "name": "Jane", "surname": null, "active": true } |
$.people[1].surname | null |
$ | { "people": [ { "name": "John", "surname": "Doe" }, { "name": "Jane", "surname": null, "active": true } ] } |
Comment les fonctions intégrées gèrent-elles les chemins en double ?
Si le texte JSON contient des propriétés dupliquées (par exemple, deux clés portant le même nom au même niveau), les fonctions JSON_VALUE et JSON_QUERY retournent uniquement la première valeur correspondant au chemin. Pour analyser un objet JSON contenant des clés dupliquées et retourner toutes les valeurs, utilisez OPENJSON, comme indiqué dans l’exemple suivant.
DECLARE @json NVARCHAR(MAX);
SET @json=N'{"person":{"info":{"name":"John", "name":"Jack"}}}';
SELECT value
FROM OPENJSON(@json,'$.person.info');
En savoir plus sur JSON dans SQL Server et Azure SQL Database
Vidéos Microsoft
Remarque
Certains des liens vidéo de cette section peuvent ne pas fonctionner pour l’instant. Microsoft migre le contenu précédemment disponible sur Channel 9 vers une nouvelle plateforme. Nous allons mettre à jour les liens au fur et à mesure que les vidéos sont migrées vers la nouvelle plateforme.
Pour obtenir une présentation visuelle de la prise en charge intégrée de JSON dans SQL Server et Azure SQL Database, consultez les vidéos suivantes :
Voir aussi
OPENJSON (Transact-SQL)
JSON_VALUE (Transact-SQL)
JSON_QUERY (Transact-SQL)