2016-08-03 44 views
2

Ich habe die folgenden zwei Objekte, die von 2 Json-Datei bekam wurden:zwei Jsons in Power verschmelzenden

$Env = ConvertFrom-Json "$(get-content "C:\chef\environments.json")" 
$Roles = ConvertFrom-Json "$(get-content "C:\chef\roles.json")" 

Heres das löschte nach der Umwandlung:

PS C:\chef> $Env 

run_list 
-------- 
{recipe[djin_chef-max_any::default]} 


PS C:\chef> $Roles 


7-zip    : @{home=%SYSTEMDRIVE%\7-zip} 
cookbook_versions : 
default   : @{env=development} 
modmon   : @{env=dev} 
paypal   : @{artifact=%5BINTEGRATION%5D} 
seven_zip   : @{url=https://djcm-zip-local/djcm/chef} 
task_sched  : @{credentials=XN$q} 
windows   : @{password=K1N5} 

ich fusionieren müssen diese beiden Json-Objekte in Powershell und ich habe folgendes versucht:

Gibt es eine andere elegante Art von doin Wenn ich es falsch mache oder warum bekomme ich diesen Fehler?

+1

Wenn Sie "zwei JSONs zusammenführen" eingeben, ist das nicht sinnvoller als die Frage, ein Foto und ein Video zusammenzuführen. Es ist durchaus möglich - wenn Sie sich entscheiden, ob Sie das Bild am Anfang, am Ende als Überlagerung an einer bestimmten Stelle, jedes zweite Bild als transparentes Wasserzeichen in einer Ecke, in einem größeren Rahmen neben dem Videobild einfügen möchten ... JSON ist keine Datenstruktur, sondern ein Serialisierungsformat für viele Datenstrukturen. Sie müssen nicht unbedingt zusammenbrechen - Sie müssen die Datenstrukturen auflösen und genau wissen, wie sie zusammengefügt werden müssen. – TessellatingHeckler

Antwort

2

$Env hat nur eine Eigenschaft, so könnte man ein neues Mitglied in $Roles hinzufügen:

$Roles | Add-Member -NotepropertyName run_list -NotePropertyValue $Env.run_list 

Diese Syntax Arbeit in Powershell v3, aber Sie aufgelistet v2 und v2 in Ihren Tags .. so für v2:

$Roles | Add-Member -MemberType NoteProperty -Name run_list -Value $Env.run_list 
+1

Was wäre, wenn Env mehr als eine Eigenschaft hätte? Irgendwelche hinzufügen und zusammenführen? – Scooby

+0

@Scooby Sie könnten über $ Env.PSObject.Properties iterieren und jedes Mitglied programmatisch hinzufügen. – briantist

+0

könnten Sie dafür ein Beispiel mit zusammengesetzten Werten liefern ?? – Scooby