JSON_OBJECT (Transact-SQL)
Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL Managed Instance
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:
So konvertiert FOR JSON SQL Server-Datentypen in JSON-Datentypen (SQL Server)
DieJSON_OBJECT
-Funktion verwendet die in diesemFOR JSON
-Artikel beschriebenen Regeln, um SQL-Datentypen in JSON-Typen in der JSON-Objektausgabe zu konvertieren.Schutz von Sonderzeichen und Steuerzeichen durch FOR JSON (SQL Server)
DieJSON_OBJECT
-Funktion schützt Sonderzeichen und stellt die Steuerzeichen in der JSON-Ausgabe wie in diesemFOR JSON
-Artikel beschrieben dar.
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"} |