Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: 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 с FOR JSON.
В следующих примерах показано, как использовать предложение FOR JSON с опцией PATH. Форматируйте вложенные результаты с помощью имен столбцов с разделиемыми точками или с помощью вложенных запросов, как показано в примерах. По умолчанию значения NULL не включаются в FOR JSON выходные данные.
Замечание
Расширение MSSQL для Visual Studio Code может автоматически форматировать результаты JSON (как показано в этой статье), а не отображать неформатированную строку.
Примеры
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
А. Имена столбцов, разделенных точками
В приведенном ниже запросе первые пять строк из таблицы 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 AS H
INNER JOIN Sales.SalesOrderDetail AS 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 см. в формате JSON как мост между NoSQL и реляционными мирами.