Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо к: SQL Server 2016 (13.x) и более поздним версиям
Базе данных SQL Azure
Управляемому экземпляру SQL Azure
Azure Synapse Analytics (только бессерверный пул SQL)
конечной точке аналитики SQL в хранилище microsoft Fabric
в Microsoft Fabric
Чтобы обеспечить полный контроль над выходными данными предложения FOR JSON
, укажите параметр PATH
.
режим PATH
позволяет создавать объекты-оболочки и вложенные сложные свойства. Результаты форматируются в виде массива объектов JSON.
Альтернативой является использование параметра AUTO
для автоматического форматирования выходных данных на основе структуры инструкции SELECT
.
- Дополнительные сведения о параметре
AUTO
см. в разделе Форматирование выходных данных JSON автоматически в режиме AUTO. - Общие сведения об обоих вариантах см. в разделе Форматирование результатов запроса в формате JSON с FOR JSON.
Ниже приведены некоторые примеры предложения FOR JSON
с параметром PATH
. Форматируйте вложенные результаты с помощью имен столбцов, разделенных точкой, или с помощью вложенных запросов, как показано в следующих примерах. По умолчанию значения NULL не включаются в выходные данные FOR JSON
.
Azure Data Studio является рекомендуемым редактором запросов JSON, так как он позволяет выполнять автоматическое форматирование результатов JSON (как показано в этой статье) вместо отображения плоской строки.
Пример. Имена столбцов, разделенные точкой
В приведенном ниже запросе первые пять строк из таблицы AdventureWorks Person
форматируются как JSON.
Предложение FOR JSON PATH
использует псевдоним столбца или имя столбца для определения имени ключа в выходных данных JSON. Если псевдоним содержит точки, параметр PATH
создает вложенные объекты.
Запрос
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
Результат
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sanchez",
"Info": {
"MiddleName": "J"
}
}, {
"Id": 2,
"FirstName": "Terri",
"LastName": "Duffy",
"Info": {
"MiddleName": "Lee"
}
}, {
"Id": 3,
"FirstName": "Roberto",
"LastName": "Tamburello"
}, {
"Id": 4,
"FirstName": "Rob",
"LastName": "Walters"
}, {
"Id": 5,
"FirstName": "Gail",
"LastName": "Erickson",
"Info": {
"Title": "Ms.",
"MiddleName": "A"
}
}]
Пример: несколько таблиц
Если вы ссылаетесь на несколько таблиц в запросе, FOR JSON PATH
группирует каждый столбец по его псевдониму. Следующий запрос создает один объект JSON для пары (OrderHeader, OrderDetails
), присоединенной к запросу.
Запрос
SELECT TOP 2 H.SalesOrderNumber AS 'Order.Number',
H.OrderDate AS 'Order.Date',
D.UnitPrice AS 'Product.Price',
D.OrderQty AS 'Product.Quantity'
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON PATH
Результат
[{
"Order": {
"Number": "SO43659",
"Date": "2011-05-31T00:00:00"
},
"Product": {
"Price": 2024.9940,
"Quantity": 1
}
}, {
"Order": {
"Number": "SO43659"
},
"Product": {
"Price": 2024.9940
}
}]
Дополнительные сведения о JSON в ядре СУБД SQL
Наглядные инструкции по встроенной поддержке JSON в SQL Server и базе данных SQL Azure см. в следующих видео.
- JSON as a bridge between NoSQL and relational worlds (JSON как мост между NoSQL и реляционными решениями)