json - 在powershell中为数组中的每个json对象添加特定属性

标签 json powershell

我有一个 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/

相关文章:

java - 反序列化json数组,其中属性值为数组java

javascript - 如何在 Javascript 中将 JSON 字符串值转换为小写?

android - 如何从动态字段名更新 Realm 值

windows - 如何使用 PowerShell 在 IIS 中停止和启动单个网站?

powershell - 在 Powershell 中分析 CSV

java - 使用 Sitebricks 发送一致的 JSON 响应来报告异常

ios - 在 iOS 中创建 JSON 格式

c# - 如何在 Windows 窗体应用程序中运行 PowerShell 命令?

windows - 如何在 PowerShell 中捕获异常?

powershell - 获取长路径名上的文件夹 NTFS ACL