Dela via


JSON_OBJECT (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Syntaxen JSON_OBJECT konstruerar JSON-objekttext från noll eller fler uttryck.

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

Ett teckenuttryck som definierar värdet för JSON-nyckelnamnet.

value_expression

Ett uttryck som definierar värdet för JSON-nyckeln.

json_null_clause

Kan användas för att styra funktionsbeteendet JSON_OBJECT när value_expression är NULL. Alternativet NULL ON NULL konverterar SQL-värdet NULL till ett JSON-nullvärde när JSON-nyckelvärdet genereras. Alternativet ABSENT ON NULL utelämnar hela nyckeln om värdet är NULL. Standardinställningen för det här alternativet är NULL ON NULL.

Returvärde

Returnerar en giltig JSON-objektsträng av typen nvarchar(max). Om alternativet RETURNING json ingår returneras JSON-objektet som json-typ .

Mer information om vad du ser i utdata för funktionen JSON_OBJECT finns i följande artiklar:

Article Description
Så här konverterar FÖR JSON SQL Server-datatyper till JSON-datatyper Funktionen JSON_OBJECT använder de regler som beskrivs i den här FOR JSON artikeln för att konvertera SQL-datatyper till JSON-typer i JSON-objektutdata.
Hur FÖR JSON undflyr specialtecken och kontrolltecken Funktionen JSON_OBJECT undflyr specialtecken och representerar kontrolltecken i JSON-utdata enligt beskrivningen i den här FOR JSON artikeln.

Examples

Exempel 1

I följande exempel returneras ett tomt JSON-objekt.

SELECT JSON_OBJECT();

Result

{}

Exempel 2

I följande exempel returneras ett JSON-objekt med två nycklar.

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

Result

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

Exempel 3

I följande exempel returneras ett JSON-objekt med en nyckel eftersom värdet för en av nycklarna är NULL och alternativet ABSENT ON NULL anges.

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

Result

{"name":"value"}

Exempel 4

I följande exempel returneras ett JSON-objekt med två nycklar. En nyckel innehåller en JSON-sträng och en annan nyckel innehåller en JSON-matris.

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

Result

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

Exempel 5

I följande exempel returneras ett JSON-objekt med två nycklar. En nyckel innehåller en JSON-sträng och en annan nyckel innehåller ett JSON-objekt.

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

Result

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

Exempel 6

I följande exempel returneras ett JSON-objekt med de indata som anges som variabler eller SQL-uttryck.

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}

Exempel 7

I följande exempel returneras ett JSON-objekt per rad i frågan.

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":"sleeping"}
52 {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"}

Exempel 8

I följande exempel returneras ett JSON-objekt som json-typ .

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

Result

{"a":1}