從 JSON 輸出移除方括弧 - WITHOUT_ARRAY_WRAPPER 選項
適用於: SQL Server 2016 (13.x) 以上版本 Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics (僅無伺服器 SQL 集區)
若要移除預設圍住 FOR JSON 子句之 JSON 輸出的方括弧,請指定 WITHOUT_ARRAY_WRAPPER 選項。 將此選項用於單一資料列結果,以產生單一 JSON 物件作為輸出,而不是內含單一元素的陣列。
如果您將此選項用於多個資料列結果,由於有多個元素且遺漏方括號,因此產生的輸出不是有效的 JSON。
範例 (單一資料列結果)
下列範例顯示使用或不使用 WITHOUT_ARRAY_WRAPPER 選項的 FOR JSON 子句輸出。
查詢
SELECT 2015 as year, 12 as month, 15 as day
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
使用結果 with the 結果
{
"year": 2015,
"month": 12,
"day": 15
}
不使用 WITHOUT_ARRAY_WRAPPER 選項的結果 (預設值)
[{
"year": 2015,
"month": 12,
"day": 15
}]
範例 (多個資料列結果)
以下是使用 FOR JSON 選項的 WITHOUT_ARRAY_WRAPPER 選項。 這個範例會產生多個資料列結果。 由於有多個元素且遺漏方括號,因此輸出不是有效的 JSON。
查詢
SELECT TOP 3 SalesOrderNumber, OrderDate, Status
FROM Sales.SalesOrderHeader
ORDER BY ModifiedDate
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
使用結果 with the 結果
{
"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
}
不使用 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
}]
深入了解 SQL Server 和 Azure SQL Database 中的 JSON
Microsoft 影片
注意
本節中的部分影片連結目前可能無法運作。 Microsoft 正在將先前在 Channel 9 上的內容移轉至新的平台。 我們會在影片移轉至新平台時更新連結。
如需 SQL Server 和 Azure SQL Database 中內建 JSON 支援的觀看式簡介,請參閱下列影片: