Condividi tramite


JSON_OBJECT (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureEndpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft FabricDatabase SQL in Microsoft Fabric

La JSON_OBJECT sintassi costruisce il testo dell'oggetto JSON da zero o più espressioni.

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

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 JSON_OBJECT funzione quando value_expression è NULL. L'opzione NULL ON NULL converte il valore SQL NULL in un valore Null JSON 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). Se l'opzione RETURNING json è inclusa, l'oggetto JSON viene restituito come tipo json .

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

Article Description
Come FOR JSON converte i tipi di dati di SQL Server in tipi di dati JSON La funzione JSON_OBJECT usa le regole descritte in questo articolo FOR JSON per convertire i tipi di dati SQL in tipi JSON nell'output dell'oggetto JSON.
Modalità di escape di FOR JSON di caratteri speciali e caratteri di controllo La funzione JSON_OBJECT usa sequenze di escape per i caratteri speciali e rappresenta i caratteri di controllo nell'output JSON come descritto in questo articolo FOR JSON.

Examples

Esempio 1

L'esempio seguente restituisce un oggetto JSON vuoto.

SELECT JSON_OBJECT();

Result

{}

Esempio 2

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

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

Result

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

Result

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

Result

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

Result

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

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;

Result

session_id info
51 {"security_id":"AQYAAAAAAAVQAAAAY/0dmFnai5oioQHh9eNArBIkYd4=","login":"NT SERVICE\\SQLTELEMETRY$SQL22","stato":"addormento"}
52 {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"}

Esempio 8

L'esempio seguente restituisce un oggetto JSON come tipo json .

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

Result

{"a":1}