適用於: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 的完整控制權,請指定 PATH 選項。
PATH 模式可讓您建立包裝函式物件和巢狀複雜屬性。 結果會格式化為 JSON 物件陣列。
替代方法是使用 AUTO 選項,根據語句的結構 SELECT 自動格式化輸出。
- 如需選項
AUTO的詳細資訊,請參閱 使用 AUTO 模式自動格式化 JSON 輸出 。 - 如需這兩個選項的概觀,請參閱 使用 FOR JSON 將查詢結果格式化為 JSON。
以下是 FOR JSON 子句的 PATH 選項範例。 請使用以點分隔的欄位名稱或巢狀查詢,來格式化巢狀結果,如下例所示。 根據預設,null 值不會包含在 FOR JSON 的輸出中。
Azure Data Studio 是 JSON 查詢的建議使用查詢編輯器,因為此編輯器會自動格式化 JSON 結果 (如本文所示),而非顯示一般字串。
範例 - 點分隔資料行名稱
下列查詢會將 AdventureWorks Person 資料表中的前五個資料列格式化為 JSON。
子 FOR JSON PATH 句會使用欄位別名或欄位名稱來判斷 JSON 輸出中的鍵值名稱。 如果別名包含點,則 PATH 選項會建立巢狀物件。
Query
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
Result
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sanchez",
"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.",
"MiddleName": "A"
}
}]
範例 - 多份資料表
如果您在查詢中參考多個數據表,請使用 FOR JSON PATH 其別名來巢狀每個數據行。 下列查詢會為每個在OrderHeader, OrderDetails查詢中聯結的一組建立一個 JSON 物件。
Query
SELECT TOP 2 H.SalesOrderNumber AS 'Order.Number',
H.OrderDate AS 'Order.Date',
D.UnitPrice AS 'Product.Price',
D.OrderQty AS 'Product.Quantity'
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON PATH
Result
[{
"Order": {
"Number": "SO43659",
"Date": "2011-05-31T00:00:00"
},
"Product": {
"Price": 2024.9940,
"Quantity": 1
}
}, {
"Order": {
"Number": "SO43659"
},
"Product": {
"Price": 2024.9940
}
}]
深入瞭解 SQL Database Engine 中的 JSON
如需內建 JSON 支援的視覺效果簡介,請參閱下列影片: