Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Télécharger Microsoft Edge
Plus d’informations sur Internet Explorer et Microsoft Edge
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.
Pour mettre en forme la sortie JSON automatiquement en fonction de la structure de l’instruction SELECT, utilisez
FOR JSON AUTO
.
Voici un exemple d’instruction
SELECT
avec la clause
FOR JSON
et sa sortie.
Option 1 : Vous contrôlez 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 une sortie JSON imbriquée avec le mode PATH (SQL Server).
Pour connaître la syntaxe et l’utilisation, consultez
CLAUSE FOR (Transact-SQL).
Option 2 : L’instruction SELECT contrôle la sortie avec FOR JSON AUTO
Dans le mode
AUTO
, la structure de l'instruction SELECT détermine le format de la sortie JSON.
Par défaut, les valeurs
null
ne sont pas incluses dans la sortie. Vous pouvez utiliser
INCLUDE_NULL_VALUES
pour changer ce comportement.
Voici un exemple de requête qui utilise le mode
AUTO
avec la clause
FOR JSON
.
SELECT name, surname
FROM emp
FOR JSON AUTO;
Et voici le code JSON retourné.
"name": "John"
"name": "Jane",
"surname": "Doe"
2.b - Exemple avec JOIN et NULL
L’exemple suivant de SELECT...FOR JSON AUTO
inclut un affichage de ce à quoi ressemblent les résultats JSON lorsqu’il existe une relation 1:plusieurs entre les données des tables jointes.
L’absence de la valeur null dans le JSON retourné est également illustrée. Toutefois, vous pouvez remplacer ce comportement par défaut en utilisant le mot clé INCLUDE_NULL_VALUES
sur la clause FOR
.
DROP TABLE IF EXISTS #tabStudent;
DROP TABLE IF EXISTS #tabClass;
CREATE TABLE #tabClass (
ClassGuid UNIQUEIDENTIFIER NOT NULL DEFAULT newid(),
ClassName NVARCHAR(32) NOT NULL
CREATE TABLE #tabStudent (
StudentGuid UNIQUEIDENTIFIER NOT NULL DEFAULT newid(),
StudentName NVARCHAR(32) NOT NULL,
ClassGuid UNIQUEIDENTIFIER NULL -- Foreign key.
INSERT INTO #tabClass (ClassGuid, ClassName)
VALUES
('DE807673-ECFC-4850-930D-A86F921DE438', 'Algebra Math'),
('C55C6819-E744-4797-AC56-FF8A729A7F5C', 'Calculus Math'),
('98509D36-A2C8-4A65-A310-E744F5621C83', 'Art Painting');
INSERT INTO #tabStudent (StudentName, ClassGuid)
VALUES
('Alice Apple', 'DE807673-ECFC-4850-930D-A86F921DE438'),
('Alice Apple', 'C55C6819-E744-4797-AC56-FF8A729A7F5C'),
('Betty Boot', 'C55C6819-E744-4797-AC56-FF8A729A7F5C'),
('Betty Boot', '98509D36-A2C8-4A65-A310-E744F5621C83'),
('Carla Cap', null);
SELECT c.ClassName,
s.StudentName
FROM #tabClass AS c
RIGHT JOIN #tabStudent AS s ON s.ClassGuid = c.ClassGuid
ORDER BY c.ClassName,
s.StudentName
FOR JSON AUTO
-- To include NULL values in the output, uncomment the following line:
--, INCLUDE_NULL_VALUES
DROP TABLE IF EXISTS #tabStudent;
DROP TABLE IF EXISTS #tabClass;
Et voici le code JSON généré par l’instruction SELECT précédente.
JSON_F52E2B61-18A1-11d1-B105-00805F49916B
{"s":[{"StudentName":"Carla Cap"}]},
{"ClassName":"Algebra Math","s":[{"StudentName":"Alice Apple"}]},
{"ClassName":"Art Painting","s":[{"StudentName":"Betty Boot"}]},
{"ClassName":"Calculus Math","s":[{"StudentName":"Alice Apple"},{"StudentName":"Betty Boot"}]}
Plus d’informations sur FOR JSON AUTO
Pour plus d’informations et d’exemples, consultez Mettre en forme automatiquement la sortie JSON en mode AUTO (SQL Server).
Pour connaître la syntaxe et l’utilisation, consultez CLAUSE 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.
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 ROOT (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 cette option, la sortie n’inclut pas les propriétés JSON pour les valeurs NULL dans les résultats de la requête. Pour plus d’informations, consultez Inclure des valeurs Null dans la sortie JSON avec l’option INCLUDE_NULL_VALUES (SQL Server).
WITHOUT_ARRAY_WRAPPER. Pour supprimer les crochets qui entourent par défaut la sortie JSON de la clause FOR JSON
, spécifiez l’option WITHOUT_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 (SQL Server).
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 é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
Voir aussi
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
Étapes suivantes
FOR Clause (Transact-SQL)
Utiliser la sortie de FOR JSON dans SQL Server et les applications clientes (SQL Server)