JSON_OBJECT (Transact-SQL)

S’applique à : SQL Server 2022 (16.x) Azure SQL Database 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 :

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"}