Hapus atribut dari objek JSON di PowerShell

Oct 01 2020

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

5 TheMadTechnician Oct 01 2020 at 07:12

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