Udostępnij za pomocą


JSON_OBJECT (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstancePunkt końcowy analizy SQL w usłudze Microsoft FabricMagazyn w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Składnia JSON_OBJECT tworzy tekst obiektu JSON z zera lub więcej wyrażeń.

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

Wyrażenie znaku definiujące wartość nazwy klucza JSON.

value_expression

Wyrażenie definiujące wartość klucza JSON.

json_null_clause

Może służyć do kontrolowania JSON_OBJECT zachowania funkcji, gdy value_expression to NULL. Opcja NULL ON NULL konwertuje wartość SQL NULL 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 typu nvarchar(max). RETURNING json Jeśli opcja jest dołączona, obiekt JSON jest zwracany jako typ json.

Aby uzyskać więcej informacji o tym, co widzisz w danych wyjściowych funkcji JSON_OBJECT, zobacz następujące artykuły:

Article Description
Jak format JSON konwertuje typy danych programu SQL Server na typy danych JSON Funkcja JSON_OBJECT używa reguł opisanych w tym artykule FOR JSON, aby przekonwertować typy danych SQL na typy JSON w danych wyjściowych obiektu JSON.
Jak w formacie JSON znaki specjalne i znaki sterujące są ucieczką znaków specjalnych Funkcja JSON_OBJECT ucieczki znaków specjalnych i reprezentuje znaki sterujące w danych wyjściowych JSON zgodnie z opisem w tym artykule FOR JSON.

Examples

Przykład 1

Poniższy przykład zwraca pusty obiekt JSON.

SELECT JSON_OBJECT();

Result

{}

Przykład 2

Poniższy przykład zwraca obiekt JSON z dwoma kluczami.

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

Result

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

Result

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

Result

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

Result

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

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;

Result

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

Przykład 8

Poniższy przykład zwraca obiekt JSON jako typ json .

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

Result

{"a":1}