Ausgabe
Ich extrahiere ein JSON aus einer Datei mit der folgenden Syntax:
$json = Get-Content $jsonfile | Out-String | ConvertFrom-Json
So sieht mein JSON derzeit aus:
{
"Server": {
"CustomModules": [
"@{Name=Test Server Module 1; Tag=Server; Action=Option I want; Image_Path=C:Temp; Admin_Only=false}",
"@{Name=Test Server Module 2; Tag=Server; Action=Option I want; Image_Path=C:Temp/Downloads; Admin_Only=false}"
]
},
"Help Desk": {
"CustomModules": [
"@{Name=Test Help Desk Module 1; Tag=HD; Action=Option I want; Image_Path=C:Temp; Admin_Only=false}",
"@{Name=Test Help Desk Module 2; Tag=HD; Action=Option I want; Image_Path=C:Temp/Downloads; Admin_Only=true}"
]
}
}
Wie würde ich einen weiteren Satz von Werten unter den „CustomModules“ des Servers hinzufügen, damit es so aussieht?
"Server": {
"CustomModules": [
"@{Name=Test Server Module 1; Tag=Server; Action=Option I want; Image_Path=C:Temp; Admin_Only=false}",
"@{Name=Test Server Module 2; Tag=Server; Action=Option I want; Image_Path=C:Temp/Downloads; Admin_Only=false}",
"@{Name=Test Server Module 3; Tag=Server; Action=Option I want; Image_Path=C:/User/TestUser; Admin_Only=true}"
]
},
"Help Desk": {
"CustomModules": [
"@{Name=Test Help Desk Module 1; Tag=HD; Action=Option I want; Image_Path=C:Temp; Admin_Only=false}",
"@{Name=Test Help Desk Module 2; Tag=HD; Action=Option I want; Image_Path=C:Temp/Downloads; Admin_Only=true}"
]
}
}
Ich habe Add-Member ausprobiert, aber es fügt nur die bereits vorhandenen aktuellen Werte hinzu.
Lösung
Sie können Objekte an das Array CustomModules
array anhängen, indem Sie dies als Beispiel verwenden:
$json = Get-Content path\to\json.json -Raw | ConvertFrom-Json
$json.Server.CustomModules = @(
$json.Server.CustomModules
([pscustomobject]@{
Name = 'Test Server Module 3'
Tag = 'Server'
Action = 'Option I want'
Image_Path = 'C:/User/TestUser'
Admin_Only = $true
})
)
$json | ConvertTo-Json
Wie in den Kommentaren empfohlen, verfügen Ihre Arrays jedoch derzeit über Zeichenfolgendarstellungen von PowerShell-Objekten, die höchstwahrscheinlich aufgrund der Serialisierung die Standardtiefe von 2 überschritten haben . Um dies zu vermeiden, da Sie sie später analysieren müssen , verwenden Sie ConvertTo-Json -Depth 99
beim Exportieren des ursprünglichen Json.
Beantwortet von – Santiago Squarzon
Antwort geprüft von – Pedro (FixError Volunteer)