JSON_OBJECT (Transact-SQL)
Dotyczy:programu SQL ServerAzure SQL Databaseazure SQL Managed Instancepunktu końcowego analizy SQL w usłudze Microsoft FabricWarehouse w usłudze Microsoft Fabric
Tworzy tekst obiektu JSON z zera lub większej liczby wyrażeń.
Składnia
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
Argumenty
json_key_name
Jest wyrażeniem znaku definiującym wartość nazwy klucza JSON.
value_expression Jest wyrażeniem definiującym wartość klucza JSON.
json_null_clause
Może służyć do kontrolowania zachowania funkcji JSON_OBJECT, gdy value_expression jest NULL
. Opcja NULL ON NULL
konwertuje wartość NULL
SQL na wartość null JSON podczas generowania wartości klucza JSON. Opcja ABSENT ON NULL
pominie cały klucz, jeśli wartość jest NULL
. Ustawieniem domyślnym dla tej opcji jest NULL ON NULL
.
Wartość zwracana
Zwraca prawidłowy ciąg obiektu JSON nvarchar(max) typu.
Aby uzyskać więcej informacji o tym, co widzisz w danych wyjściowych funkcji JSON_OBJECT
, zobacz następujące artykuły:
Jak funkcja JSON konwertuje typy danych programu SQL Server na typy danych JSON (SQL Server)
FunkcjaJSON_OBJECT
używa reguł opisanych w tym artykuleFOR JSON
, aby przekonwertować typy danych SQL na typy JSON w danych wyjściowych obiektu JSON.How FOR JSON escapes special characters and control characters (SQL Server)
FunkcjaJSON_OBJECT
ucieczki znaków specjalnych i reprezentuje znaki sterujące w danych wyjściowych JSON zgodnie z opisem w tym artykuleFOR JSON
.
Przykłady
Przykład 1
Poniższy przykład zwraca pusty obiekt JSON.
SELECT JSON_OBJECT();
wyników
{}
Przykład 2
Poniższy przykład zwraca obiekt JSON z dwoma kluczami.
SELECT JSON_OBJECT('name':'value', 'type':1)
wyników
{"name":"value","type":1}
Przykład 3
Poniższy przykład zwraca obiekt JSON z jednym kluczem, ponieważ wartość jednego z kluczy jest NULL
i określono opcję ABSENT ON NULL
.
SELECT JSON_OBJECT('name':'value', 'type':NULL ABSENT ON NULL)
wyników
{"name":"value"}
Przykład 4
Poniższy przykład zwraca obiekt JSON z dwoma kluczami. Jeden klucz zawiera ciąg JSON, a drugi klucz zawiera tablicę JSON.
SELECT JSON_OBJECT('name':'value', 'type':JSON_ARRAY(1, 2))
wyników
{"name":"value","type":[1,2]}
Przykład 5
Poniższy przykład zwraca obiekt JSON z dwoma kluczami. Jeden klucz zawiera ciąg JSON, a drugi klucz zawiera obiekt JSON.
SELECT JSON_OBJECT('name':'value', 'type':JSON_OBJECT('type_id':1, 'name':'a'))
wyników
{"name":"value","type":{"type_id":1,"name":"a"}}
Przykład 6
Poniższy przykład zwraca obiekt JSON z danymi wejściowymi określonymi jako zmienne lub wyrażenia 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))
wyników
{"user_name":"dbo","id":"E2CBD8B4-13C1-4D2F-BFF7-E6D722F095FD","sid":63}
Przykład 7
Poniższy przykład zwraca obiekt JSON na wiersz w zapytaniu.
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;
wyników
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"} |