我有一个JSON,其中包含一个键=>值方式的3个对象。此JSON包装在Array中。所以现在,我有了一个由JSON对象组成的数组。
我在这里要做的是从数组中删除JSON对象之一(不是完整的JSON元素)。
有需要做的主意吗?
示例JSON:
2019-01-07
样本数组
{
'd_id' => '1',
'name' => 'abc',
'mapping' => 'xyz'
}
这是我尝试过的:
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'
}]
答案 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
}