我有一个 JSON 对象数组,我想为每个存在的对象添加一个特定的属性。
例如,数组如下:
[
{
"Average": 1.3085,
"ExtendedStatistics": {
},
"Maximum": 0,
"Minimum": 0,
"SampleCount": 0,
"Sum": 0,
"Timestamp": "\/Date(1496972280000)\/",
"Unit": {
"Value": "Percent"
}
},
{
"Average": 1.4324999999999999,
"ExtendedStatistics": {
},
"Maximum": 0,
"Minimum": 0,
"SampleCount": 0,
"Sum": 0,
"Timestamp": "\/Date(1496944680000)\/",
"Unit": {
"Value": "Percent"
}
}
]
我想向所有对象添加“源”:“CPU”。我该怎么做?我是 PowerShell 的新手,无法完成这项工作。
最佳答案
您可以执行以下操作:
$JSON | ConvertFrom-Json | ForEach-Object {
$_ | Add-Member -MemberType NoteProperty -Name 'Source' -Value 'CPU' -PassThru
} | ConvertTo-Json
这假设您的 JSON 输入位于名为
$JSON
的变量中。 ,您需要将其替换为您访问 JSON 内容的方式(例如 Get-Content yourfile.json
)。获得 JSON 后,我们使用
ConvertFrom-JSON
将其转换为 PowerShell 对象。然后我们使用管道将其发送到
ForEach-Object
使用 Add-Member
的循环cmdlet 为集合中的每个项目添加一个属性(当前项目由 $_
表示),名为“Source”,值为“CPU”。根据 mklement0 的评论,必须使用 -PassThru
switch 将结果发送回管道。然后我们将该输出通过管道传输到 ConvertTo-JSON 以将其转换回来。
关于json - 在powershell中为数组中的每个json对象添加特定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471175/