JSON_OBJECT (Transact-SQL)

Aplica-se a: SQL Server 2022 (16.x) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Constrói o texto do objeto JSON do zero ou mais expressões.

Sintaxe

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

Argumentos

json_key_name

É uma expressão de caractere que define o valor do nome da chave JSON.

value_expression É uma expressão que define o valor da chave JSON.

json_null_clause

Pode ser usado para controlar o comportamento da função JSON_OBJECT quando value_expression é NULL. A opção NULL ON NULL converte o valor NULL SQL em um valor nulo JSON ao gerar o valor da chave JSON. A opção ABSENT ON NULL omitirá a chave inteira se o valor for NULL. A configuração padrão para essa opção é NULL ON NULL.

Valor retornado

Retorna uma cadeia de caracteres de objeto JSON válida do tipo nvarchar(max).

Para obter mais informações sobre o que você vê na saída da função JSON_OBJECT, confira os seguintes artigos:

Exemplos

Exemplo 1

O exemplo a seguir retorna uma instância de objeto JSON vazia.

SELECT JSON_OBJECT();

Resultado

{}

Exemplo 2

O exemplo a seguir retorna um objeto JSON com duas chaves.

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

Resultado

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

Exemplo 3

O exemplo a seguir retorna um objeto JSON com uma chave, pois o valor de uma das chaves é NULL e a opção ABSENT ON NULL é especificada.

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

Resultado

{"name":"value"}

Exemplo 4

O exemplo a seguir retorna um objeto JSON com duas chaves. Uma chave contém uma cadeia de caracteres JSON e outra chave contém uma matriz JSON.

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

Resultado

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

Exemplo 5

O exemplo a seguir retorna um objeto JSON com duas chaves. Uma chave contém uma cadeia de caracteres JSON e outra chave contém um objeto JSON.

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

Resultado

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

Exemplo 6

O exemplo a seguir retorna um objeto JSON com as entradas especificadas como variáveis ou expressões SQL.

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

Resultado

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

Exemplo 7

O exemplo a seguir retorna um objeto JSON por linha na consulta.

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;

Resultado

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