Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: SQL Server 2016 (13.x) и более поздних версиях
; Azure SQL Database
,Azure SQL Managed Instance
,Azure Synapse Analytics (только для serverless SQL pool),
SQL аналитический конечный пункт в Microsoft Fabric
; Склад в Microsoft Fabric
,SQL база данных в 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 создает вложенные объекты.
Query
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
Result
[{
"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), присоединенной к запросу.
Query
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
Result
[{
"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 см. в следующих видео:
- JSON as a bridge between NoSQL and relational worlds (JSON как мост между NoSQL и реляционными решениями)