Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Mettez les résultats de requête au format JSON ou exportez des données depuis SQL Server au format JSON en ajoutant la clause FOR JSON à une instruction SELECT. Utilisez la clause FOR JSON pour simplifier les applications clientes en déléguant la mise en forme de la sortie JSON produite par l’application à SQL Server.
Note
Azure Data Studio est l’éditeur de requête recommandé pour les requêtes JSON, car il met en forme automatiquement les résultats JSON, comme illustré dans cet article. SQL Server Management Studio affiche une chaîne non mise en forme.
Dans Fabric Data Warehouse, FOR JSON doit être le dernier opérateur de la requête, et n’est donc pas autorisé dans les sous-requêtes.
Mettre en forme les résultats des requêtes
Quand vous utilisez la clause FOR JSON, vous pouvez spécifier de manière explicite la structure de la sortie JSON ou laisser la structure de l’instruction SELECT déterminer la sortie.
Pour maintenir un contrôle total sur le format de la sortie JSON, utilisez
FOR JSON PATH. Vous pouvez créer des objets wrapper et imbriquer des propriétés complexes.Pour mettre automatiquement en forme la sortie JSON en fonction de la structure de l’instruction
SELECT, utilisezFOR JSON AUTO.
Voici un exemple d’instruction SELECT avec la clause FOR JSON et sa sortie.
Contrôler la sortie avec FOR JSON PATH
En mode PATH, vous pouvez utiliser la syntaxe à point (par exemple, Item.Price) pour mettre en forme la sortie imbriquée.
Voici un exemple de requête qui utilise le mode PATH avec la clause FOR JSON. L’exemple suivant utilise également l’option ROOT pour spécifier un élément racine nommé.
Plus d’informations sur FOR JSON PATH
Pour plus d’informations et d’exemples, consultez Mettre en forme la sortie JSON imbriquée avec le mode PATH.
Pour plus d’informations sur la syntaxe et l’utilisation, consultez Clause SELECT - FOR (Transact-SQL).
Contrôler d’autres options de sortie JSON
Contrôlez la sortie de la clause FOR JSON en utilisant les options supplémentaires suivantes.
ROOTPour ajouter un élément de niveau supérieur unique à la sortie JSON, spécifiez l’option
ROOT. Si vous ne spécifiez pas cette option, la sortie JSON n’a aucun élément racine. Pour plus d’informations, consultez Ajouter un nœud racine à la sortie JSON avec l’option ROOT.INCLUDE_NULL_VALUESPour inclure des valeurs null dans la sortie JSON, spécifiez l’option
INCLUDE_NULL_VALUES. Si vous ne spécifiez cette option, la sortie n’inclut pas les propriétés JSON pour les valeursNULLdans les résultats de la requête. Pour plus d’informations, consultez Inclure des valeurs Null dans l’option JSON - INCLUDE_NULL_VALUES.WITHOUT_ARRAY_WRAPPERPour supprimer les crochets qui entourent par défaut la sortie JSON de la clause
FOR JSON, spécifiez l’optionWITHOUT_ARRAY_WRAPPER. Utilisez cette option pour générer un seul objet JSON en tant que sortie d’un résultat de ligne unique. Si vous ne spécifiez pas cette option, la sortie JSON est mise en forme en tant que tableau, ce qui signifie qu’elle est placée entre crochets. Pour plus d’informations, consultez Supprimer les crochets de la sortie JSON avec l’option WITHOUT_ARRAY_WRAPPER.
Sortie de la clause FOR JSON
La sortie de la clause FOR JSON a les caractéristiques suivantes :
Le jeu de résultats contient une seule colonne.
- Un jeu de résultats de petite taille peut ne contenir qu’une seule ligne.
- Un grand jeu de résultats fractionne la longue chaîne JSON sur plusieurs lignes.
Par défaut, SQL Server Management Studio (SSMS) concatène les résultats en une seule ligne quand la valeur du paramètre de sortie est Résultats dans des grilles. La barre d’état SSMS affiche le nombre de lignes réel.
D’autres applications clientes peuvent nécessiter du code qui recombine des résultats longs en une seule chaîne JSON valide en concaténant le contenu de plusieurs lignes. Pour obtenir un exemple de ce code dans une application C#, consultez Utiliser la sortie de FOR JSON dans une application cliente C#.
Les résultats sont présentés sous la forme de tableau d’objets JSON.
Le nombre d’éléments du tableau JSON est égal au nombre de lignes dans les résultats de l’instruction SELECT (avant l’application de la clause FOR JSON).
Chaque ligne des résultats de l’instruction SELECT (avant l’application de la clause FOR JSON) devient un objet JSON distinct dans le tableau.
Chaque colonne des résultats de l’instruction SELECT (avant l’application de la clause FOR JSON) devient une propriété de l’objet JSON.
Le nom et la valeur des colonnes sont échappés selon la syntaxe JSON. Pour plus d’informations, consultez Comment FOR JSON place dans une séquence d’échappement les caractères spéciaux et les caractères de contrôle.
Example
Voici un exemple qui montre comment la clause FOR JSON met en forme la sortie JSON.
Résultats de la requête
| A | B | C | D |
|---|---|---|---|
| 10 | 11 | 12 | X |
| 20 | 21 | 22 | Y |
| 30 | 31 | 32 | Z |
Sortie JSON
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]
Contenu connexe
- Comment FOR JSON convertit les types de données SQL Server en types de données JSON
- Comment FOR JSON place dans une séquence d’échappement les caractères spéciaux et les caractères de contrôle
- Vidéo : JSON en tant que pont entre les mondes relationnel et NoSQL
- Clause SELECT - FOR (Transact-SQL)
- Utiliser la sortie FOR JSON dans le moteur de base de données SQL et dans les applications clientes