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


JSON_OBJECT (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureКонечная точка аналитики SQL в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

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

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

Символьное выражение, определяющее значение имени ключа 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 типа nvarchar(max ). RETURNING json Если параметр включен, объект JSON возвращается в виде типа JSON.

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

Article Description
Как FOR JSON преобразует типы данных SQL Server в типы данных JSON Функция JSON_OBJECT использует правила, описанные в статье FOR JSON, для преобразования типов данных SQL в типы JSON в выходных данных объекта JSON.
Как FOR JSON экранирует специальные символы и управляющие символы Функция JSON_OBJECT экранирует специальные знаки и представляет управляющие символы в выходных данных JSON, как описано в статье FOR JSON.

Examples

Пример 1

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

SELECT JSON_OBJECT();

Result

{}

Пример 2

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

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

Result

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

Пример 3

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

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

Result

{"name":"value"}

Пример 4

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

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

Result

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

Пример 5

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

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

Result

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

Пример 6

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

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}

Пример 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;

Result

session_id info
51 {"security_id":"AQYAAAAAAAVQAAAAY/0dmFnai5oioQHh9eNArBIkYd4=","login":"NT SERVICE\\SQLTELEMETRY$SQL22","status":"спящий"}
52 {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"}

Пример 8

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

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

Result

{"a":1}