使用PostgreSQL我可以有多行json对象。
select (select ROW_TO_JSON(_) from (select c.name, c.age) as _) as jsonresult from employee as c
这给了我这个结果:
{"age":65,"name":"NAME"}
{"age":21,"name":"SURNAME"}
但是在SqlServer中,当我使用FOR JSON AUTO子句时,它为我提供了一个json对象数组,而不是多行。
select c.name, c.age from customer c FOR JSON AUTO
[{"age":65,"name":"NAME"},{"age":21,"name":"SURNAME"}]
如何在SqlServer中获得相同的结果格式?
答案 0 :(得分:15)
通过在每一行中构建单独的JSON:
SELECT (SELECT [age], [name] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)
FROM customer
有一种替代形式不需要你知道表结构(但可能性能更差,因为它可能会生成一个大的中间JSON):
SELECT [value] FROM OPENJSON(
(SELECT * FROM customer FOR JSON PATH)
)
答案 1 :(得分:1)
没有更好的结构
选择c.id,jdata。* 来自客户c 交叉申请 (SELECT * FROM customer jc where jc.id = c.id FOR JSON PATH,WITHOUT_ARRAY_WRAPPER)jdata(jdata)