如何用T-SQL将查询结果转换为JSON行集?SQL Server是否支持?
实现SQL Server每行返回单个JSON对象
当然可以做到这个需求!你只需要调整FOR JSON的参数,用WITHOUT_ARRAY_WRAPPER选项去掉外层的数组包裹,就能让每行生成独立的JSON对象。
针对你的测试数据,修改后的查询如下:
SELECT (SELECT t.* FOR JSON PATH, WITHOUT_ARRAY_WRAPPER) AS JsonRow FROM ( VALUES (1, 'foo1', CAST('1977-05-19' AS DATE), CAST(1 AS BIT), NULL), (2, 'foo2', CAST('1978-05-19' AS DATE), CAST(0 AS BIT), 'bar2'), (3, 'foo3', CAST('1979-05-19' AS DATE), NULL, 'bar3') ) t(Id, Foo, Day, Bool, Bar)
关键参数说明:
FOR JSON PATH:指定以列名作为JSON键的格式生成结果,适配你的数据结构;WITHOUT_ARRAY_WRAPPER:去掉默认的外层数组括号,让每行输出单独的JSON对象,而非将所有对象包裹在一个数组中。
查询结果:
| JsonRow |
|---|
| {"Id":1,"Foo":"foo1","Day":"1977-05-19","Bool":true} |
| {"Id":2,"Foo":"foo2","Day":"1978-05-19","Bool":false,"Bar":"bar2"} |
| {"Id":3,"Foo":"foo3","Day":"1979-05-19","Bar":"bar3"} |
这样就完全符合你想要的每行对应一个JSON对象的需求啦!
内容的提问来源于stack exchange,提问作者vbilopav
相关产品推荐
相关产品推荐

