適用於: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 子句之 JSON 輸出的方括弧,請指定 WITHOUT_ARRAY_WRAPPER 選項。 將此選項用於單一資料列結果,以產生單一 JSON 物件作為輸出,而不是內含單一元素的陣列。
如果您將此選項用於多個資料列結果,由於有多個元素且遺漏方括號,因此產生的輸出不是有效的 JSON。
範例 (單一資料列結果)
下列範例顯示含有和不含 FOR JSON 選項的 WITHOUT_ARRAY_WRAPPER 子句的輸出。
Query
SELECT 2015 as year, 12 as month, 15 as day
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
使用WITHOUT_ARRAY_WRAPPER 選項的結果
{
"year": 2015,
"month": 12,
"day": 15
}
[{
"year": 2015,
"month": 12,
"day": 15
}]
範例 (多個資料列結果)
以下是 同時具有 FOR JSON 和 不含 WITHOUT_ARRAY_WRAPPER 選項之子句的另一個範例。 這個範例會產生多個資料列結果。 由於有多個元素且遺漏方括號,因此輸出不是有效的 JSON。
Query
SELECT TOP 3 SalesOrderNumber, OrderDate, Status
FROM Sales.SalesOrderHeader
ORDER BY ModifiedDate
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
使用WITHOUT_ARRAY_WRAPPER 選項的結果
{
"SalesOrderNumber": "SO43662",
"OrderDate": "2011-05-31T00:00:00",
"Status": 5
}, {
"SalesOrderNumber": "SO43661",
"OrderDate": "2011-05-31T00:00:00",
"Status": 5
}, {
"SalesOrderNumber": "SO43660",
"OrderDate": "2011-05-31T00:00:00",
"Status": 5
}
[{
"SalesOrderNumber": "SO43662",
"OrderDate": "2011-05-31T00:00:00",
"Status": 5
}, {
"SalesOrderNumber": "SO43661",
"OrderDate": "2011-05-31T00:00:00",
"Status": 5
}, {
"SalesOrderNumber": "SO43660",
"OrderDate": "2011-05-31T00:00:00",
"Status": 5
}]
深入瞭解 SQL Database Engine 中的 JSON
如需內建 JSON 支援的視覺效果簡介,請參閱下列影片: