適用於: SQL Server 2016(13.x)和更新版本,
Azure SQL Database
Azure SQL 受控實例
Azure Synapse Analytics(僅無伺服器 SQL 資源集區)
在 Microsoft Fabric 中的 SQL 分析端點
在 Microsoft Fabric 中的 Warehouse
若要根據 SELECT
語句的結構自動格式化 FOR JSON
子句的輸出,請指定 AUTO
選項。
當您指定 [AUTO
] 選項時,JSON 輸出的格式會自動根據 SELECT 清單中的數據行順序及其源數據表來決定。 您無法變更此格式。
替代方法是使用 PATH
選項來維持對輸出的控制。
- 如需有關
PATH
選項的更多資訊,請參閱 以 PATH 模式格式化巢狀 JSON 輸出。 - 如需這兩個選項的概觀,請參閱 使用 FOR JSON 將查詢結果格式化為 JSON。
使用 FOR JSON AUTO
選項的查詢必須具有 FROM
子句。
以下是 FOR JSON
子句的 AUTO
選項範例。
Azure Data Studio 是適合 JSON 查詢的建議查詢編輯器,因為此編輯器會自動格式化 JSON 結果 (如本文所示),而不是顯示一般字串。
範例
範例 1
查詢
當查詢只參考一個數據表時,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"
}]
範例 2
查詢
聯結資料表時,第一個資料表中的資料行會產生為根物件的屬性。 第二個資料表中的欄位將會作為巢狀物件的屬性生成。 第二個資料表的資料表名稱或別名 (例如,下列範例中的 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
結果
[{
"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
查詢
您可以將子查詢 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
結果
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
深入瞭解 SQL Database Engine 中的 JSON
如需 SQL Server 和 Azure SQL Database 中內建 JSON 支援的觀看式簡介,請參閱下列影片: