JSON_OBJECT (Transact-SQL)
S’applique à : SQL Server 2022 (16.x)base de données Azure SQL Azure SQL Managed Instance
Construit le texte de l’objet JSON à partir de zéro expression ou plus.
Syntaxe
JSON_OBJECT ( [ <json_key_value> [,...n] ] [ json_null_clause ] )
<json_key_value> ::= json_key_name : value_expression
<json_null_clause> ::=
NULL ON NULL
| ABSENT ON NULL
Arguments
json_key_name
Est une expression de caractère qui définit la valeur du nom de la clé JSON.
value_expression est une expression qui définit la valeur de la clé JSON.
json_null_clause
Peut être utilisé pour contrôler le comportement de la fonction JSON_OBJECT quand value_expression est NULL
. L’option NULL ON NULL
convertit la valeur NULL
SQL en valeur null JSON lors de la génération de la valeur de la clé JSON. L’option ABSENT ON NULL
omet la clé entière si la valeur est NULL
. La valeur par défaut de cette option est NULL ON NULL
.
Valeur retournée
Retourne une chaîne d’objet JSON valide de type nvarchar(max).
Pour plus d’informations sur ce que vous voyez dans la sortie de la fonction JSON_OBJECT
, consultez les articles suivants :
Conversion par FOR JSON des types de données SQL Server en types de données JSON (SQL Server)
La fonctionJSON_OBJECT
utilise les règles décrites dans cet articleFOR JSON
pour convertir les types de données SQL en types JSON dans la sortie d’objet JSON.Comment FOR JSON place dans une séquence d’échappement les caractères spéciaux et les caractères de contrôle (SQL Server)
La fonctionJSON_OBJECT
met en échappement les caractères spéciaux et représente les caractères de contrôle dans la sortie JSON, comme décrit dans cet articleFOR JSON
.
Exemples
Exemple 1
L’exemple suivant retourne un objet JSON vide.
SELECT JSON_OBJECT();
Résultat
{}
Exemple 2
L’exemple suivant retourne un objet JSON avec deux clés.
SELECT JSON_OBJECT('name':'value', 'type':1)
Résultat
{"name":"value","type":1}
Exemple 3
L’exemple suivant retourne un objet JSON avec une clé puisque la valeur de l’une des clés est NULL
et que l’option ABSENT ON NULL
est spécifiée.
SELECT JSON_OBJECT('name':'value', 'type':NULL ABSENT ON NULL)
Résultat
{"name":"value"}
Exemple 4
L’exemple suivant retourne un objet JSON avec deux clés. Une clé contient une chaîne JSON et une autre clé contient un tableau JSON.
SELECT JSON_OBJECT('name':'value', 'type':JSON_ARRAY(1, 2))
Résultat
{"name":"value","type":[1,2]}
Exemple 5
L’exemple suivant retourne un objet JSON avec deux clés. Une clé contient une chaîne JSON et une autre clé contient un objet JSON.
SELECT JSON_OBJECT('name':'value', 'type':JSON_OBJECT('type_id':1, 'name':'a'))
Résultat
{"name":"value","type":{"type_id":1,"name":"a"}}
Exemple 6
L’exemple suivant retourne un objet JSON avec les entrées spécifiées sous forme de variables ou d’expressions SQL.
DECLARE @id_key nvarchar(10) = N'id',@id_value nvarchar(64) = NEWID();
SELECT JSON_OBJECT('user_name':USER_NAME(), @id_key:@id_value, 'sid':(SELECT @@SPID))
Résultat
{"user_name":"dbo","id":"E2CBD8B4-13C1-4D2F-BFF7-E6D722F095FD","sid":63}
Exemple 7
L’exemple suivant retourne un objet JSON par ligne dans la requête.
SELECT s.session_id, JSON_OBJECT('security_id':s.security_id, 'login':s.login_name, 'status':s.status) as info
FROM sys.dm_exec_sessions AS s
WHERE s.is_user_process = 1;
Résultat
session_id |
info |
---|---|
51 | {"security_id":"AQYAAAAAAAVQAAAAY/0dmFnai5oioQHh9eNArBIkYd4=","login":"NT SERVICE\\SQLTELEMETRY$SQL22" ,"status":"sleeping"} |
52 | {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"} |