從 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 支援的觀看式簡介,請參閱下列影片:

另請參閱

FOR 子句 (Transact-SQL)