Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: 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 предложения на основе структуры SELECT инструкции, укажите AUTO этот параметр.
При указании AUTO параметра формат выходных данных JSON автоматически определяется в зависимости от порядка столбцов в списке SELECT и их исходных таблиц. Этот формат изменить нельзя.
Используйте параметр, PATH если вы хотите управлять выходными данными.
- Дополнительные сведения о параметре
PATHсм. в разделе Формат вложенных выходных данных JSON с помощью режима PATH. - Общие сведения об обоих вариантах см. в разделе Форматирование результатов запроса в формате JSON с FOR JSON.
Запрос, использующий FOR JSON AUTO параметр, должен иметь FROM предложение.
Ниже приведены некоторые примеры предложения FOR JSON с параметром AUTO.
Замечание
Расширение MSSQL для Visual Studio Code может автоматически форматировать результаты JSON (как показано в этой статье), а не отображать неформатированную строку.
Examples
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
А. Форматирование JSON из одной таблицы
Если запрос ссылается только на одну таблицу, результаты предложения FOR JSON AUTO похожи на результаты FOR JSON PATH. В этом случае FOR JSON AUTO не создает вложенные объекты. Единственное различие заключается в том, что FOR JSON AUTO выходные псевдонимы с разделиющими точками (например, Info.MiddleName в следующем примере) отображаются как ключи с точками, а не как вложенные объекты.
SELECT TOP 5 BusinessEntityID AS Id,
FirstName,
LastName,
Title AS 'Info.Title',
MiddleName AS 'Info.MiddleName'
FROM Person.Person
FOR JSON AUTO;
Вот результат.
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sánchez",
"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.",
"Info.MiddleName": "A"
}]
В. Форматирование JSON для присоединенных таблиц
При соединении таблиц столбцы в первой таблице создаются как свойства корневого объекта. Столбцы во второй таблице создаются как свойства вложенного объекта. В качестве имени вложенного массива используется имя таблицы или псевдоним второй таблицы (например, D в следующем примере).
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader AS H
INNER JOIN Sales.SalesOrderDetail AS D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO;
Вот результат.
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO43659",
"D": [{
"UnitPrice": 34.40
}, {
"UnitPrice": 134.24,
"OrderQty": 5
}]
}]
С. Используйте FOR JSON PATH, чтобы сопоставить вывод в режиме AUTO
Вместо использования FOR JSON AUTO можно вложить подзапрос FOR JSON PATH в SELECT инструкцию, как показано в следующем примере. В этом примере выводится тот же результат, что и в предыдущем.
SELECT TOP 2 SalesOrderNumber,
OrderDate,
(SELECT UnitPrice,
OrderQty
FROM Sales.SalesOrderDetail AS D
WHERE H.SalesOrderID = D.SalesOrderID
FOR JSON PATH) AS D
FROM Sales.SalesOrderHeader AS H
FOR JSON PATH;
Вот результат.
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
Дополнительные сведения о JSON в ядре СУБД SQL
Визуальное введение в встроенную поддержку JSON см. в формате JSON как мост между NoSQL и реляционными мирами.