JSON_OBJECT (Transact-SQL)

Применимо к:База данных Azure SQL SQL Server 2022 (16.x Управляемый экземпляр SQL Azure

Создает текст объекта JSON из нуля или нескольких выражений.

Синтаксис

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

Аргументы

json_key_name — символьное выражение, определяющее значение имени ключа JSON.

value_expression — выражение, определяющее значение ключа JSON.

json_null_clause можно использовать для управления поведением функции JSON_OBJECT, если value_expression имеет значение NULL. Параметр NULL ON NULL преобразует значение SQL NULL в значение JSON NULL при создании значения ключа JSON. Параметр ABSENT ON NULL опустит весь ключ, если значение равно NULL. Значение по умолчанию для этого параметра — NULL ON NULL.

Дополнительные сведения о выходных данных функции JSON_OBJECT см. в следующих статьях.

Возвращаемое значение

Возвращает допустимую строку объекта JSON типа nvarchar(max).

Remarks

Примеры

Пример 1

В следующем примере возвращается пустой объект JSON.

SELECT JSON_OBJECT();

Результат

{}

Пример 2

В следующем примере возвращается объект JSON с двумя ключами.

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

Результат

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

Пример 3

В следующем примере возвращается объект JSON с одним ключом, так как значение для одного из ключей равно NULL, и указан параметр ABSENT ON NULL.

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

Результат

{"name":"value"}

Пример 4

В следующем примере возвращается объект JSON с двумя ключами. Один ключ содержит строку JSON, а другой ключ — массив JSON.

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

Результат

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

Пример 5

В следующем примере возвращается объект JSON с двумя ключами. Один ключ содержит строку JSON, а другой ключ — объект JSON.

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

Результат

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

Пример 6

В следующем примере возвращается объект JSON с входными данными, указанными в виде переменных или выражений 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))

Результат

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

Пример 7

В следующем примере возвращается объект JSON для каждой строки в запросе.

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;

Результат

session_id сведения
51 {"security_id":"AQYAAAAAAAVQAAAAY/0dmFnai5oioQHh9eNArBIkYd4=","login":"NT SERVICE\\SQLTELEMETRY$SQL22","status":"sleeping"}
52 {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"}

См. также раздел

Данные JSON (SQL Server)