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
см. в следующих статьях.
Как FOR JSON преобразует типы данных SQL Server в типы данных JSON (SQL Server)
ФункцияJSON_OBJECT
использует правила, описанные в статьеFOR JSON
, для преобразования типов данных SQL в типы JSON в выходных данных объекта JSON.Как FOR JSON экранирует специальные символы и управляющие символы (SQL Server)
ФункцияJSON_OBJECT
экранирует специальные знаки и представляет управляющие символы в выходных данных JSON, как описано в статьеFOR JSON
.
Примеры
Пример 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"} |