如何从ArrayList中的JSON中删除对象

时间:2019-04-01 09:39:28

标签: powershell

我有一个JSON,其中包含一个键=>值方式的3个对象。此JSON包装在Array中。所以现在,我有了一个由JSON对象组成的数组。

我在这里要做的是从数组中删除JSON对象之一(不是完整的JSON元素)。

有需要做的主意吗?

示例JSON:

2019-01-07

样本数组

{
 'd_id' => '1',
 'name' => 'abc',
 'mapping' => 'xyz'
}

这是我尝试过的:

  1. 使用ArrayList而不是Array获得所需的输出。
  2. 使用“删除”来清理ArrayList中的元素。

powershell代码:

A = [{
 'd_id' => '1',
 'name' => 'abc',
 'mapping' => 'xyz'
},
{
 'd_id' => '2',
 'name' => 'abc',
 'mapping' => 'xyz'
},
{
 'd_id' => '3',
 'name' => 'abc',
 'mapping' => 'xyz'
}]

预期:

$j_res = new-object collections.generic.list[object]

For ($i = 0; $i -lt 5; $i++){
$ret = ConvertFrom-Json "{}"
$ret | Add-Member -Name 'D_Id' -Value $i -MemberType NoteProperty
$ret | Add-Member -Name 'Name' -Value 'axz' -MemberType NoteProperty
$ret | Add-Member -Name 'Mapping' -Value 'byz' -MemberType NoteProperty
$j_res.Add($ret)
}
$j_res.Remove($j_res[0].Mapping)
Write-Host 'The  is required output is' $j_res

实际:

A = [{
 'd_id' => '1',
 'name' => 'abc'
},
{
 'd_id' => '2',
 'name' => 'abc'
},
{
 'd_id' => '3',
 'name' => 'abc'
}]

1 个答案:

答案 0 :(得分:0)

您正在尝试从“数组/列表”中删除元素,但您应该查看的是删除数组内PSObject的属性。

$tmp = ConvertFrom-Json "[{`"id`" : 1,`"mapping`" : `"val`"},{`"id`" : 2,`"mapping`" : `"val`"},{`"id`" : 3,`"mapping`" : `"val`"}]"
foreach ($i in $tmp){
    $i.PSObject.Members.Remove("mapping")
}

ConvertTo-Json -InputObject $ tmp -Depth 2 |写主机

输出:

{
  "value": [
    {
      "id":  1
    }, {
      "id":  2
    }, {
      "id":  3
    }
  ],
  "Count": 3
}