使用 JSON_MODIFY 将数组添加到数组

Adding array to array with JSON_MODIFY

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,

尝试了一些疯狂的 append/lax/strict 组合...但我是 JSON 操作的新手,并且我几乎 'liquid brain stage' 在这个项目上。 我也考虑过添加一个空白数组,但无济于事(我也可能做错了)

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

如果我理解正确的话,你想要这样的东西:

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

结果:

{"OverAll":[{"Product Section":[{"Some List": [{"Name":"Item1","Id":"2"},{"Name":"Item2","Id":"3"}]}]}]}

要检查您的路径是否正确,您可以使用 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"')
-- []