Mettre en forme les résultats de requête en tant que JSON avec FOR JSON
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pool SQL serverless uniquement)
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 pour simplifier les FOR JSON
applications clientes en déléguant la mise en forme de la sortie JSON de l’application vers SQL Server.
Remarque
Azure Data Studio est l’éditeur de requête recommandé pour les requêtes JSON, car il met automatiquement en forme les résultats JSON, comme indiqué dans cet article. SQL Server Management Studio affiche une chaîne non mise en forme.
Mettre en forme les résultats de la requête
Lorsque vous utilisez la FOR JSON
clause, vous pouvez spécifier explicitement 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 en forme automatiquement la sortie JSON en fonction de la structure de l’instruction
SELECT
, utilisezFOR JSON AUTO
.
Voici un exemple d’instruction SELECT
avec la FOR JSON
clause et sa sortie.
Contrôler la sortie avec FOR JSON PATH
En PATH
mode, vous pouvez utiliser la syntaxe des points , par exemple, Item.Price
pour mettre en forme la sortie imbriquée.
Voici un exemple de requête qui utilise PATH
le mode avec la FOR JSON
clause. 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 (SQL Server) .
Pour plus d’informations sur la syntaxe et l’utilisation, consultez la clause FOR (Transact-SQL).
Contrôler d’autres options de sortie JSON
Contrôlez la sortie de la FOR JSON
clause à l’aide des options supplémentaires suivantes.
ROOT
Pour 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 RACINE (SQL Server) .INCLUDE_NULL_VALUES
Pour inclure des valeurs null dans la sortie JSON, spécifiez l’option
INCLUDE_NULL_VALUES
. Si vous ne spécifiez pas cette option, la sortie n’inclut pas de propriétés JSON pour lesNULL
valeurs dans les résultats de la requête. Pour plus d’informations, consultez Include Null Values in JSON - INCLUDE_NULL_VALUES Option.WITHOUT_ARRAY_WRAPPER
Pour supprimer les crochets qui entourent la sortie JSON de la
FOR JSON
clause par défaut, 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 sous forme de tableau, autrement dit, la sortie est placée entre crochets. Pour plus d’informations, consultez Supprimer les crochets de JSON - 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 petit jeu de résultats peut contenir 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 pour recombiner 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 échappe des caractères spéciaux et des caractères de contrôle (SQL Server).
Exemple
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
- Conversion par FOR JSON des types de données SQL Server en types de données JSON (SQL Server)
- Comment FOR JSON place dans une séquence d’échappement les caractères spéciaux et les caractères de contrôle (SQL Server)
- JSON : un pont entre les mondes relationnel et NoSQL
- SELECT - CLAUSE FOR (Transact-SQL)
- Utiliser la sortie FOR JSON dans SQL Server et dans les applications clientes (SQL Server)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour