如何用FOR JSON PATH将SQL表每行数据转为独立JSON对象
解决SQL Server中每行生成独立JSON对象的问题
这个问题我之前也碰到过,SQL Server的FOR JSON PATH默认确实会把所有查询结果打包成一个JSON数组,要实现每行对应一个独立的JSON对象,只要对每一行数据单独生成JSON就可以了,具体做法如下:
解决方案代码
SELECT (SELECT [code] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER) AS json_output FROM feature;
原理说明
- 原语句
SELECT [code] FROM feature FOR JSON PATH会把所有行的JSON对象包裹在数组[]中,返回一个包含多个对象的数组。 - 我们通过子查询
(SELECT [code] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)对原表的每一行单独生成JSON:FOR JSON PATH负责将当前行的code字段转为JSON对象WITHOUT_ARRAY_WRAPPER选项会去掉默认添加的数组括号,让结果变成单个独立的JSON对象
- 最终查询结果的每一行都会对应原表的一行,单元格中是一个格式正确的独立JSON对象,比如:
{"code":"D5ABX0"} {"code":"MKT536"} {"code":"WAEX44"}
内容的提问来源于stack exchange,提问作者PierekEast
相关产品推荐
相关产品推荐

