Partager via


JSON_OBJECT (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceEndpoint SQL analytics dans Microsoft FabricEntrepôt dans Microsoft FabricBase de données SQL dans Microsoft Fabric

La JSON_OBJECT syntaxe construit le texte d’objet JSON à partir de zéro ou plusieurs expressions.

Syntax

JSON_OBJECT ( [ <json_key_value> [ , ...n ] ] [ json_null_clause ] [ RETURNING json ] )

<json_key_value> ::= json_key_name : value_expression

<json_null_clause> ::=
      NULL ON NULL
    | ABSENT ON NULL

Arguments

json_key_name

Expression de caractère qui définit la valeur du nom de clé JSON.

value_expression

Expression qui définit la valeur de la clé JSON.

json_null_clause

Peut être utilisé pour contrôler le comportement de JSON_OBJECT la fonction lorsque value_expression est NULL. L’option NULL ON NULL convertit la valeur SQL NULL en valeur NULL JSON lors de la génération de la valeur de 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). Si l’option RETURNING json est incluse, l’objet JSON est retourné en tant que type json .

Pour plus d’informations sur ce que vous voyez dans la sortie de la fonction JSON_OBJECT, consultez les articles suivants :

Article Descriptif
Comment FOR JSON convertit les types de données SQL Server en types de données JSON La fonction JSON_OBJECT utilise les règles décrites dans cet article FOR JSON pour convertir les types de données SQL en types JSON dans la sortie d’objet JSON.
Comment FOR JSON échappe des caractères spéciaux et des caractères de contrôle La fonction JSON_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 article FOR JSON.

Examples

Exemple 1

L’exemple suivant retourne un objet JSON vide.

SELECT JSON_OBJECT();

Result

{}

Exemple 2

L’exemple suivant retourne un objet JSON avec deux clés.

SELECT JSON_OBJECT('name':'value', 'type':1);

Result

{"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);

Result

{"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));

Result

{"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'));

Result

{"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 AS NVARCHAR (10) = N'id', @id_value AS NVARCHAR (64) = NEWID();
SELECT JSON_OBJECT('user_name':USER_NAME(), @id_key:@id_value, 'sid':(SELECT @@SPID));

Result

{"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;

Result

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

Exemple 8

L’exemple suivant retourne un objet JSON en tant que type JSON .

SELECT JSON_OBJECT("a":1 RETURNING json);

Result

{"a":1}