JSON_OBJECT (Transact-SQL)

Si applica a: SQL Server 2022 (16.x) database SQL di Azure Istanza gestita di SQL di Azure

Costruisce il testo dell'oggetto JSON da zero o più espressioni.

Sintassi

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

Argomenti

json_key_name

Espressione di caratteri che definisce il valore del nome della chiave JSON.

value_expression: espressione che definisce il valore della chiave JSON.

json_null_clause

Può essere usato per controllare il comportamento della funzione JSON_OBJECT quando value_expression è NULL. L'opzione NULL ON NULL converte il valore SQL NULL in un valore JSON null durante la generazione del valore della chiave JSON. L'opzione ABSENT ON NULL ometterà l'intera chiave se il valore è NULL. L'impostazione predefinita per questa opzione è NULL ON NULL.

Valore restituito

Restituisce una stringa di oggetto JSON valida di tipo nvarchar(max).

Per altre informazioni su quanto visualizzato nell'output della funzione JSON_OBJECT, vedere gli articoli seguenti:

Esempi

Esempio 1

L'esempio seguente restituisce un oggetto JSON vuoto.

SELECT JSON_OBJECT();

Risultato

{}

Esempio 2

L'esempio seguente restituisce un oggetto JSON con due chiavi.

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

Risultato

{"name":"value","type":1}

Esempio 3

L'esempio seguente restituisce un oggetto JSON con una chiave poiché il valore di una delle chiavi è NULL ed è specificata l'opzione ABSENT ON NULL.

SELECT JSON_OBJECT('name':'value', 'type':NULL ABSENT ON NULL)

Risultato

{"name":"value"}

Esempio 4

L'esempio seguente restituisce un oggetto JSON con due chiavi. Una chiave contiene una stringa JSON e l'altra chiave contiene una matrice JSON.

SELECT JSON_OBJECT('name':'value', 'type':JSON_ARRAY(1, 2))

Risultato

{"name":"value","type":[1,2]}

Esempio 5

L'esempio seguente restituisce un oggetto JSON con due chiavi. Una chiave contiene una stringa JSON e l'altra chiave contiene un oggetto JSON.

SELECT JSON_OBJECT('name':'value', 'type':JSON_OBJECT('type_id':1, 'name':'a'))

Risultato

{"name":"value","type":{"type_id":1,"name":"a"}}

Esempio 6

L'esempio seguente restituisce un oggetto JSON con gli input specificati come variabili o espressioni 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))

Risultato

{"user_name":"dbo","id":"E2CBD8B4-13C1-4D2F-BFF7-E6D722F095FD","sid":63}

Esempio 7

L'esempio seguente restituisce un oggetto JSON per ogni riga della query.

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;

Risultato

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