Entfernen Sie ein Attribut aus dem JSON-Objekt in Powershell
Ich habe JSON verfolgt und möchte Straßen aus dem JSON-Objekt unter Adresse entfernen, bei dem es sich um ein Array handelt. Ich versuche dies in Powershell zu tun
{
"Customer": [
{
"id": "123"
}
],
"Nationality": [
{
"name": "US",
"id": "456"
}
],
"address": [
{
"$type": "Home", "name": "Houston", "streets": [ { "name": "Union", "postalCode": "10", } ] }, { "$type": "Office",
"name": "Hawai",
"streets": [
{
"name": "Rock",
"postalCode": "11",
}
]
}
],
"address": [
{
"$type": "Home1", "name": "Houston", "streets": [ { "name": "Union1", "postalCode": "14", } ] }, { "$type": "Office1",
"name": "Hawaii1",
"streets": [
{
"name": "Rock1",
"postalCode": "15",
}
]
}
],
}
Ich möchte Straßen aus dem JSON-Objekt entfernen und hier ist mein Powershell-Skript, aber es funktioniert nicht! Ich versuche, JSON in ein Objekt zu konvertieren und dann die Eigenschaften zu durchlaufen, um diese zu entfernen.
$FileContent = Get-Content -Path "Test.json" -Raw | ConvertFrom-Json foreach ($content in $FileContent) { #Write-Host $content.address
$content.address = $content.address | Select-Object * -ExcludeProperty streets
}
$FileContent | ConvertTo-Json -Depth 100 | Out-File "Test.json" -Force
Antworten
Wenn Sie es verwenden ConvertFrom-Json, werden Dinge automatisch in Objekte für Sie konvertiert. Sobald es sich um Objekte handelt, können Sie Select-Objectangeben, welche Eigenschaften Sie in die Pipeline aufnehmen möchten, mit denen Sie einfach festlegen können $FileContent.address(ein Array von Objekten), dass sie sich selbst entsprechen, wobei die Eigenschaft street von jedem Objekt im Array ausgeschlossen wird.
$FileContent = Get-Content -Path "Test.json" -Raw | ConvertFrom-Json
$FileContent.address = $FileContent.address | Select-Object * -ExcludeProperty streets
$FileContent | ConvertTo-Json