Freigeben über


JSON_OBJECT (Transact-SQL)

Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL verwaltete Instanz

Erstellt JSON-Objekttext aus null oder mehr Ausdrücken.

Syntax

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

Argumente

json_key_name

Ein Zeichenausdruck, der den Wert des JSON-Schlüsselnamens definiert.

value_expression: Ein Ausdruck, der den Wert des JSON-Schlüssels definiert

json_null_clause

Kann zum Steuern des Verhaltens der Funktion JSON_OBJECT verwendet werden, wenn value_expression gleich NULL ist. Die Option NULL ON NULL konvertiert den SQL-NULL-Wert in einen JSON-Nullwert, wenn der JSON-Schlüsselwert generiert wird. Die Option ABSENT ON NULL lässt den gesamten Schlüssel weg, wenn der Wert NULL ist. Die Standardeinstellung für diese Option ist NULL ON NULL.

Rückgabewert

Gibt eine gültige JSON-Objektzeichenfolge vom Typ nvarchar(max) zurück.

Weitere Informationen dazu, was in der Ausgabe der JSON_OBJECT-Funktion angezeigt wird, finden Sie in den folgenden Artikeln:

Beispiele

Beispiel 1

Im folgenden Beispiel wird ein leeres JSON-Objekt zurückgegeben.

SELECT JSON_OBJECT();

Ergebnis

{}

Beispiel 2

Im folgenden Beispiel wird ein JSON-Objekt mit zwei Schlüsseln zurückgegeben.

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

Ergebnis

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

Beispiel 3

Im folgenden Beispiel wird ein JSON-Objekt mit einem Schlüssel zurückgegeben, da der Wert für einen der Schlüssel NULL und die Option ABSENT ON NULL angegeben ist.

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

Ergebnis

{"name":"value"}

Beispiel 4

Im folgenden Beispiel wird ein JSON-Objekt mit zwei Schlüsseln zurückgegeben. Ein Schlüssel enthält eine JSON-Zeichenfolge, und der andere Schlüssel enthält ein JSON-Array.

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

Ergebnis

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

Beispiel 5

Im folgenden Beispiel wird ein JSON-Objekt mit zwei Schlüsseln zurückgegeben. Ein Schlüssel enthält eine JSON-Zeichenfolge, der andere Schlüssel enthält ein JSON-Objekt.

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

Ergebnis

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

Beispiel 6

Im folgenden Beispiel wird ein JSON-Objekt mit den Eingaben zurückgegeben, die als Variablen oder SQL-Ausdrücke angegeben sind.

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))

Ergebnis

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

Beispiel 7

Im folgenden Beispiel wird ein JSON-Objekt pro Zeile in der Abfrage zurückgegeben.

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;

Ergebnis

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