You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SQL Server FOR JSON语句生成值数组JSON结果

解决方法

要得到你期望的纯字符串数组格式,你可以通过指定列别名为[value]并使用FOR JSON PATH来实现,这样SQL Server会将每行的值直接作为数组元素,而不是嵌套的对象属性。修改后的SQL语句如下:

SELECT Convert(VARCHAR(10), [Date], 110) AS [value]
FROM dbo.Holidays
FOR JSON PATH, ROOT('Holidays')

为什么原来的语句不行?

你原来使用FOR JSON AUTO时,SQL Server会自动将每行的列映射为JSON对象的键值对,所以输出的是包含HolidayDate属性的对象数组。而通过将列别名设为[value],FOR JSON PATH会识别这个特殊的别名,将每行的值直接放入数组中,不再生成嵌套对象。

另一种可选方法:使用STRING_AGG构造JSON

如果你更倾向于手动构造JSON字符串,也可以用STRING_AGG聚合日期字符串,再拼接成符合要求的JSON格式:

SELECT '{"Holidays": ["' + STRING_AGG(Convert(VARCHAR(10), [Date], 110), '","') + '"]}' AS Result

不过这种方法需要注意:如果日期中包含特殊字符(比如双引号)可能会导致JSON格式错误,第一种方法更安全,因为FOR JSON会自动处理转义逻辑。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:14:59