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:
Modalità di conversione di FOR JSON dei tipi di dati SQL Server in tipi di dati JSON (SQL Server)
La funzioneJSON_OBJECT
usa le regole descritte in questo articoloFOR JSON
per convertire i tipi di dati SQL in tipi JSON nell'output dell'oggetto JSON.Modalità di uso di FOR JSON delle sequenze di escape per i caratteri speciali e di controllo (SQL Server)
La funzioneJSON_OBJECT
usa sequenze di escape per i caratteri speciali e rappresenta i caratteri di controllo nell'output JSON come descritto in questo articoloFOR JSON
.
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"} |