Leer en inglés

Compartir a través de


JSON_OBJECT (Transact-SQL)

se aplica a:SQL ServerAzure SQL Databasepunto de conexión de Azure SQL Managed InstanceSQL Analytics en Microsoft FabricWarehouse en Microsoft Fabric

Construye texto de objeto JSON a partir de cero o más expresiones.

Sintaxis

syntaxsql
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

Es una expresión de carácter que define el valor del nombre de clave JSON.

value_expression es una expresión que define el valor de la clave JSON.

json_null_clause

Se puede usar para controlar el comportamiento de la función JSON_OBJECT cuando value_expression es NULL. La opción NULL ON NULL convierte el valor NULL de SQL en un valor NULL de JSON al generar el valor del elemento de clave JSON. La opción ABSENT ON NULL omitirá toda la clave si el valor es NULL. La configuración predeterminada de esta opción es NULL ON NULL.

Valor devuelto

Devuelve una cadena de objeto JSON válida de tipo nvarchar(max).

Para obtener más información sobre lo que se ve en la salida de la función JSON_OBJECT, consulte los artículos siguientes:

Ejemplos

Ejemplo 1

En el siguiente ejemplo se devuelve un objeto JSON vacío.

SQL
SELECT JSON_OBJECT();

Resultado

JSON
{}

Ejemplo 2

En el ejemplo siguiente se devuelve un objeto JSON con dos claves.

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

Resultado

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

Ejemplo 3

En el ejemplo siguiente se devuelve un objeto JSON con una clave, ya que el valor de una de las claves es NULL y se ha especificado la opción ABSENT ON NULL.

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

Resultado

JSON
{"name":"value"}

Ejemplo 4

En el ejemplo siguiente se devuelve un objeto JSON con dos claves. Una clave contiene una cadena JSON y otra clave contiene una matriz JSON.

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

Resultado

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

Ejemplo 5

En el ejemplo siguiente se devuelve un objeto JSON con dos claves. Una clave contiene una cadena JSON y otra clave contiene un objeto JSON.

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

Resultado

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

Ejemplo 6

En el siguiente ejemplo se devuelve un objeto JSON con las entradas especificadas como variables o expresiones SQL.

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

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

Ejemplo 7

En el siguiente ejemplo se devuelve un objeto JSON por fila de la consulta.

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