我在 SQL Server 中有以下代碼
declare @output table ([key] nvarchar(max) , val nvarchar(max))
insert into @output values ('key1' , 'val1' )
insert into @output values ('key2' , 'val2' )
select * from @output for json auto
回傳以下結果:
[{"key":"key1","val":"val1"},{"key":"key2","val":"val2"}]
我想知道是否有任何方法可以將我的 json 結果更改為類似下面的內容:
{"Key1": "val1" , "key2": "val2"}
uj5u.com熱心網友回復:
我找到了解決方案:
select '{' string_agg('"' [key] '" : "' val '"' , ',') '}' from @output
uj5u.com熱心網友回復:
FOR JSON除非您使用動態 SQL,否則您不能使用它來執行此操作。
但是,僅使用STRING_AGG. 您需要確保正確使用STRING_ESCAPE
SELECT '{' STRING_AGG('"' STRING_ESCAPE(o.[key], 'json') '":"' STRING_ESCAPE(o.val, 'json') '"', ',') '}'
FROM @output o;
請注意,如果您想要一個由第三列聚合的 JSON 陣列,例如Id,您可以使用STRING_AGG第二次
SELECT '[' STRING_AGG(o.obj, ',') ']'
FROM
SELECT obj = '{"id":"' STRING_ESCAPE(o.id, 'json') '",' STRING_AGG('"' STRING_ESCAPE(o.[key], 'json') '":"' STRING_ESCAPE(o.val, 'json') '"', ',') '}'
FROM @output o
GROUP BY Id
) o;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/393530.html
標籤:sql 数组 json sql-server
