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

如何通过SQL Server生成指定嵌套结构的JSON输出?

修正SQL以生成目标JSON结构

你的问题出在直接将records作为每条记录的嵌套前缀,导致最终输出是一个包含多个records对象的数组。要得到外层为单对象、内部records是客户数组的结构,可以通过子查询构造客户数组,再在外层包装成目标结构来实现。

修正后的SQL代码:

DECLARE @ttCustomer table (cname nvarchar(50),
                           email nvarchar(250));
INSERT @ttCustomer
VALUES ('test 1', 'test1@test.com');
INSERT @ttCustomer
VALUES ('test 2', 'test2@test.com');

SELECT 
    (
        -- 子查询生成每个客户的JSON对象,自动组成数组
        SELECT 
            'customer' AS [attributes.type],
            cname AS name,
            email AS email
        FROM @ttCustomer
        FOR JSON PATH
    ) AS records
-- 去掉外层默认的数组包裹,得到单对象结构
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;

关键调整说明:

  1. 内层子查询:负责生成每个客户的JSON结构,使用[attributes.type]的命名方式嵌套attributes对象,多条记录通过FOR JSON PATH自动组合成数组。
  2. 外层SELECT:将子查询生成的客户数组赋值给records字段,再通过WITHOUT_ARRAY_WRAPPER参数取消SQL默认给外层结果添加的数组包裹,最终得到你需要的{"records": [...]}单对象结构。

执行这段代码后,输出就会完全匹配目标JSON格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:05:36