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

如何让SQL Server生成适配JavaScript的ROOT格式JSON?

解决SQL Server生成符合JavaScript需求的JSON格式问题

你遇到的问题是因为FOR JSON AUTO, ROOT('markers')会生成一个包含markers属性的外层JSON对象,但JavaScript需要的是直接将数组赋值给变量的语句。这里有两种简单的解决方法:

方法1:拼接变量赋值前缀

去掉ROOT参数让SQL直接返回纯数组,再手动拼接markers = 前缀:

SELECT 'markers = ' + (
    SELECT a.Latitude Lat, a.Longitude Long 
    FROM Duurzamekaart.dbo.Poi a 
    FOR JSON AUTO
)

执行后会直接生成你需要的格式:

markers = [ { "Lat":3.300000, "Long":3.400000 }, { "Lat":4.400000, "Long":4.500000 } ]

方法2:使用CONCAT函数(更严谨的字符串拼接)

如果需要处理空数组等边界情况,用CONCAT函数更稳妥:

SELECT CONCAT('markers = ', (
    SELECT a.Latitude Lat, a.Longitude Long 
    FROM Duurzamekaart.dbo.Poi a 
    FOR JSON AUTO
))

原理说明

  • 当你使用ROOT('markers')时,SQL Server会将数组包裹在一个{ "markers": [...] }的对象中,这符合标准JSON格式,但不符合你需要的JavaScript变量赋值语法。
  • 去掉ROOT参数后,FOR JSON AUTO会直接返回数组形式的JSON字符串,再拼接变量赋值前缀就完美匹配JavaScript的需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:15:12