Supprimer un attribut de l'objet JSON dans PowerShell
J'ai suivi JSON et je voudrais supprimer les rues de l'objet JSON sous Address qui est un tableau. J'essaye de faire ça dans PowerShell
{
"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",
}
]
}
],
}
Je voudrais supprimer les rues de l'objet JSON et voici mon script PowerShell mais cela ne fonctionne pas! J'essaie de convertir JSON en objet, puis en boucle sur les propriétés pour les supprimer.
$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
Réponses
Lorsque vous l'utilisez, ConvertFrom-Jsonil convertira automatiquement les choses en objets pour vous. Une fois qu'ils sont des objets, vous pouvez utiliser Select-Objectpour spécifier les propriétés que vous souhaitez inclure dans le pipeline, avec lesquelles vous pouvez simplement définir $FileContent.address(un tableau d'objets) pour s'égaliser, en excluant la propriété rues de chaque objet du tableau.
$FileContent = Get-Content -Path "Test.json" -Raw | ConvertFrom-Json
$FileContent.address = $FileContent.address | Select-Object * -ExcludeProperty streets
$FileContent | ConvertTo-Json