共用方式為


從 JSON 中移除方括號 - WITHOUT_ARRAY_WRAPPER 選項

適用於:SQL Server 2016 (13.x)及以後版本Azure SQL 資料庫Azure SQL Managed InstanceAzure 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 支援的視覺效果簡介,請參閱下列影片: