微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Powershell中的JSON对象中删除属性

如何解决从Powershell中的JSON对象中删除属性

我有以下JSON,我想从数组(地址)下的JSON对象中删除街道。我正在尝试在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","streets": [
        {
          "name": "Union1","postalCode": "14",{
      "$type": "Office1","name": "Hawaii1","streets": [
        {
          "name": "Rock1","postalCode": "15",}

我想从JSON对象中删除街道,这是我的powershell脚本,但是它不起作用!我正在尝试将JSON转换为对象,然后遍历属性以将其删除

$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

解决方法

使用ConvertFrom-Json时,它将自动为您将事物转换为对象。一旦它们成为对象,您就可以使用Select-Object来指定要在管道中包含哪些属性,只需将$FileContent.address(对象数组)设置为等于自身即可,不包括streets属性从数组中的每个对象开始。

$FileContent = Get-Content -Path "Test.json" -Raw | ConvertFrom-Json
$FileContent.address = $FileContent.address | Select-Object * -ExcludeProperty streets
$FileContent | ConvertTo-Json

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。