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

问题描述 投票:0回答:1

我有一个JSON,它以key => value方式包含3个对象。这个JSON被包装到一个数组中。所以现在,我有一个由JSON对象组成的数组。

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

有什么想法需要吗?

示例JSON:

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

样本数组

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

这是我尝试过的:

  1. 使用ArrayList而不是Array来获取所需的输出。
  2. 使用'Remove'清理ArrayList中的元素。

powershell代码:

$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'
}]

实际:

A = [{
 'd_id' => '1',
 'name' => 'abc',
 'mapping' => 'xyz'
},
{
 'd_id' => '2',
 'name' => 'abc',
 'mapping' => 'xyz'
},
{
 'd_id' => '3',
 'name' => 'abc',
 'mapping' => 'xyz'
}]
powershell
1个回答
0
投票

您正在尝试从Array / List中删除元素,但您应该考虑删除数组中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
}
© www.soinside.com 2019 - 2024. All rights reserved.