適用於:SQL Server 2016 (13.x)及以後版本
Azure SQL 資料庫
Azure SQL Managed Instance
Azure Synapse Analytics(僅限 serverless SQL pool 使用)
Microsoft Fabric 中的 SQL Analytics 端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
若要根據 FOR JSON 語句的結構自動格式化 SELECT 子句的輸出,請指定 AUTO 選項。
當您指定 [AUTO] 選項時,JSON 輸出的格式會自動根據 SELECT 清單中的數據行順序及其源數據表來決定。 您無法變更此格式。
替代方法是使用 PATH 選項來維持對輸出的控制。
- 如需有關
PATH選項的更多資訊,請參閱 以 PATH 模式格式化巢狀 JSON 輸出。 - 如需這兩個選項的概觀,請參閱 使用 FOR JSON 將查詢結果格式化為 JSON。
使用 FOR JSON AUTO 選項的查詢必須具有 FROM 子句。
以下是 FOR JSON 子句的 AUTO 選項範例。
Azure Data Studio 是適合 JSON 查詢的建議查詢編輯器,因為此編輯器會自動格式化 JSON 結果 (如本文所示),而不是顯示一般字串。
Examples
範例 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"
}]
範例 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
}]
}]
範例 3
Query
您可以將子查詢 FOR JSON PATH 嵌入到 SELECT 陳述式中,而不是使用 FOR JSON AUTO,如下列範例所示。 此範例所輸出的結果與上述範例相同。
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
}]
}]
深入瞭解 SQL Database Engine 中的 JSON
如需內建 JSON 支援的視覺效果簡介,請參閱下列影片: