2017-07-24 137 views
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"."Product Selection"', JSON_QUERY(@JSON_CurrentArray)); 
SELECT @JSON_TopLevel; 

我一直努力堅持CurrentArray到頂層,添加陣列陣列JSON_MODIFY

嘗試一些瘋狂的附加/不嚴/嚴格的組合......但是即時通訊新JSON操縱和我幾乎是在「腦液階段'在這個項目。 我也想過要添加一個空白數組,但無濟於事(我可能也會這樣做是錯誤的)

現在,我代碼盲目,所以,如果你能以某種方式注入一個數組到另一個... #foreverindebted。

回答

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

結果:

{ 「整體」:[{ 「產品部分」: {「Name 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"') 
-- [] 
+0

很抱歉的產品選擇/節。無法使用我的實際數據。我會在大約一個小時內嘗試。但是,我理解正確......我正在構建一個具有各種深度的JSON對象。總體上總是有位置[0],或者我需要聲明其他屬性的位置。假設我所有具有相似名稱的多個記錄都是葉子,並且永遠不需要添加。我有一個父子樹,唯一的名稱,並且我用樹中的數據填充TopLevel(用於存儲/編輯) –