Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к: 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 и реляционными мирами.