Freigeben über


JSON_OBJECT (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Die JSON_OBJECT Syntax erstellt JSON-Objekttext aus null oder mehr Ausdrücken.

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

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 verwendet werden, um das Verhalten der JSON_OBJECT Funktion zu steuern, wenn value_expression ist NULL. Die Option NULL ON NULL konvertiert den SQL-Wert NULL beim Generieren des JSON-Schlüsselwerts in einen JSON-Nullwert. 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. Wenn die RETURNING json Option enthalten ist, wird das JSON-Objekt als JSON-Typ zurückgegeben.

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

Artikel Description
So konvertiert FOR JSON SQL Server-Datentypen in JSON-Datentypen Die JSON_OBJECT-Funktion verwendet die in diesem FOR JSON-Artikel beschriebenen Regeln, um SQL-Datentypen in JSON-Typen in der JSON-Objektausgabe zu konvertieren.
So escapet FOR JSON Sonderzeichen und Steuerzeichen Die JSON_OBJECT-Funktion schützt Sonderzeichen und stellt die Steuerzeichen in der JSON-Ausgabe wie in diesem FOR JSON-Artikel beschrieben dar.

Examples

Beispiel 1

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

SELECT JSON_OBJECT();

Result

{}

Beispiel 2

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

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

Result

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

Result

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

Result

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

Result

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

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;

Result

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

Beispiel 8

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

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

Result

{"a":1}