【问题标题】:How to remove an object from a JSON within an ArrayList如何从 ArrayList 中的 JSON 中删除对象
【发布时间】:2019-08-22 10:33:41
【问题描述】:

我有一个 JSON,它以键 => 值的方式包含 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. 使用“删除”清理 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'
}]

【问题讨论】:

  • 请看这个stackoverflow.com/questions/8820551/…,它有实现它的逻辑
  • @experimenter Q&A 与 PowerShell 无关。
  • $j_res.Remove($j_res[0].Mapping)代替$j_res | Select-Object D_Id,Name | ConvertTo-json

标签: powershell


【解决方案1】:

您正在尝试从数组/列表中删除元素,但您应该查看删除数组中 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
}

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 2021-03-11
    • 2015-08-02
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多