Hapus atribut dari objek JSON di PowerShell
Saya telah mengikuti JSON dan saya ingin menghapus jalan dari objek JSON di bawah Alamat yang berupa array. Saya mencoba melakukan ini di 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",
}
]
}
],
}
Saya ingin menghapus jalan dari objek JSON dan ini adalah skrip PowerShell saya tetapi tidak berfungsi! Saya mencoba untuk mengubah JSON menjadi objek dan kemudian mengulang properti untuk menghapusnya.
$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
Jawaban
Ketika Anda menggunakannya ConvertFrom-Jsonsecara otomatis akan mengubah sesuatu menjadi objek untuk Anda. Setelah itu adalah objek, Anda dapat menggunakan Select-Objectuntuk menentukan properti apa yang ingin Anda sertakan dalam pipeline, yang dengannya Anda dapat menyetel $FileContent.address(larik objek) agar sama dengan dirinya sendiri, dengan mengecualikan properti streets dari setiap objek dalam larik.
$FileContent = Get-Content -Path "Test.json" -Raw | ConvertFrom-Json
$FileContent.address = $FileContent.address | Select-Object * -ExcludeProperty streets
$FileContent | ConvertTo-Json