2017-07-24 1 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; 

Ive a essayé de tenir CurrentArray dans TopLevel,tableau à tableau avec JSON_MODIFY

Essayé quelques append fous/laxistes/combinaisons strictes ... mais je suis nouveau à la manipulation JSON et je suis presque « cerveau liquide étape 'sur ce point. Je pensais aussi à ajouter un tableau vide, mais en vain (je pourrais faire aussi mal)

Maintenant, je suis aveugle de code, donc, Si vous pouvez en quelque sorte injecter un tableau dans un autre ... #foreverindebted.

Répondre

1

Si je vous comprends bien, vous voulez quelque chose comme ceci:

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

Résultat:

{ "Overall": [{ "Section produit": [ {"Some List": [{"Name": "Item1", "Id": "2"}, {"Nom": "Item2", "Id": "3"}]}}}}}

Pour vérifier si votre chemin est correct, vous pouvez utiliser le mode JSON_QUERY et strict:

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

Désolé au sujet de la sélection des produits/section. Impossible d'utiliser mes données réelles. Je vais essayer dans environ une heure. Mais si je comprends bien ... Je construis un objet JSON avec une profondeur différente. Dans l'ensemble, aurais toujours la position [0] ou aurais-je besoin de déclarer la position d'autres attributs sur la ligne. Supposons que tous mes enregistrements multiples avec des noms similaires sont des feuilles et ne doivent jamais être ajoutés à. J'ai un arbre parent, des noms uniques, et je remplis TopLevel avec des données de l'arbre (pour servir, pas stocker/éditer) –