从 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 数据库中的 JSON
Microsoft 视频
注意
此部分中的某些视频链接在此时可能不起作用。 Microsoft 会将以前在第 9 频道上的内容迁移到新平台。 随着视频迁移到新平台,我们将更新链接。
有关 SQL Server 和 Azure SQL 数据库中内置 JSON 支持的视频介绍,请观看以下视频: