Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2016 (13.x) и более поздним версиям
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (только бессерверный пул SQL)
SQL аналитическая точка в Microsoft Fabric
Warehouse в 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
.
Azure Data Studio является рекомендуемым редактором запросов JSON, так как он позволяет выполнять автоматическое форматирование результатов JSON (как показано в этой статье) вместо отображения плоской строки.
Examples
Example 1
Query
Если запрос ссылается только на одну таблицу, результаты предложения 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
Result
[{
"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"
}]
Example 2
Query
При соединении таблиц столбцы в первой таблице создаются как свойства корневого объекта. Столбцы во второй таблице создаются как свойства вложенного объекта. В качестве имени вложенного массива используется имя таблицы или псевдоним второй таблицы (например, D
в следующем примере).
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO
Result
[{
"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
}]
}]
Example 3
Query
Вместо использования 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
Result
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
Дополнительные сведения о JSON в ядре СУБД SQL
Дополнительные сведения о встроенной поддержке JSON см. в следующих видео:
- JSON as a bridge between NoSQL and relational worlds (JSON как мост между NoSQL и реляционными решениями)