Поделиться через


JSON_OBJECT (Transact-SQL)

Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр 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. Если значение равно NULLзначению, параметр ABSENT ON NULL опустит весь ключ. Параметр по умолчанию для этого параметра.NULL ON NULL

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

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

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

Примеры

Пример 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 info
51 {"security_id":"AQYAAAAAAAVQAAAAY/0dmFnai5oioQHh9eNArBIkYd4=","login":"NT SERVICE\\SQLTELEMETRY$SQL22","status":"sleeping"}
52 {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"}