使用JSON_MODIFY将数组添加到数组

时间:2017-07-24 23:12:27

标签: sql sql-server json tsql sql-server-2016

DECLARE @JSON_CurrentArray NVARCHAR(MAX) = '{"Some List":
[{"Name":"Item1","Id":"2"},{"Name":"Item2","Id":"3"}]}';
DECLARE @JSON_TopLevel NVARCHAR(MAX) = '{"OverAll":[{"Product Section":[]}]}';
SET @JSON_TopLevel = JSON_MODIFY(@JSON_TopLevel, 'append $."Overall"."Product Selection"', JSON_QUERY(@JSON_CurrentArray));
SELECT @JSON_TopLevel;

我一直试图将CurrentArray粘贴到TopLevel中,

尝试了一些疯狂的追加/松懈/严格的组合......但我对JSON Manipulation很新,而且几乎处于这个项目的'液体大脑阶段'。 我还想过添加一个空白数组,但无济于事(我可能也做错了)

现在我的代码是盲目的,所以,如果你能以某种方式将一个数组注入另一个... #foreverindebted。

1 个答案:

答案 0 :(得分:1)

如果我理解正确你想要这样的事情:

DECLARE @JSON_CurrentArray NVARCHAR(MAX) = '{"Some List":
[{"Name":"Item1","Id":"2"},{"Name":"Item2","Id":"3"}]}';
DECLARE @JSON_TopLevel NVARCHAR(MAX) = '{"OverAll":[{"Product Section":[]}]}';
SET @JSON_TopLevel = JSON_MODIFY(@JSON_TopLevel, 'append $."OverAll"[0]."Product Section"', JSON_QUERY(@JSON_CurrentArray));
SELECT @JSON_TopLevel;

<强> DBFiddle

结果:

  

{&#34; OverAll&#34;:[{&#34; Product Section&#34;:[{&#34; Some List&#34;:[{&#34; Name&#34;:&# 34;项目1&#34;&#34;标识&#34;:&#34; 2&#34;},{&#34;名称&#34;:&#34;项目2&#34;&#34;标识& #34;:&#34; 3&#34;}]}]}]}

要检查您的路径是否正确,您可以使用JSON_QUERYstrict模式:

SELECT JSON_QUERY(@JSON_TopLevel, 'strict $."OverAll"."Product Section"')
--Msg 13608 Level 16 State 5 Line 7
--Property cannot be found on the specified JSON path.

-- vs
SELECT JSON_QUERY(@JSON_TopLevel, 'strict $."OverAll"[0]."Product Section"')
-- []