Powershell脚本附加到JSON数组

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

我正在努力使用PowerShell脚本向现有的JSON数组添加新元素。这是我的JSON文件结构。

[
  {
    "Company": [
      {
        "Finance": [
          {
            "StaffName": "Name1",
            "StaffRating": "Rating1"
          }
        ],
        "HR": [
          {
            "StaffName": "Name1",
            "StaffRating": "Rating1"
          },
          {
            "StaffName": "Name2",
            "StaffRating": "Rating2"
          }
        ]
      }
    ]
  }
]

我试图将以下对象附加到“公司” - >“HR”部分:

{
            "StaffName": "Name3",
            "StaffRating": "Rating3"
}

我尝试使用'+ ='没有运气。此代码不起作用,因为它从文件中删除内容而不会抛出任何错误:

    $FromJSON =  Get-Content  $JsonfilePath -raw  | ConvertFrom-Json
    $versionDataFromJSON.Company.HR += [pscustomobject] @{ StaffName= 'Name3'},[pscustomobject] @{ StaffRating= 'Rating3' }

    $FromJSON | ConvertTo-Json  | Set-Content $JsonfilePath

这是我想要的JSON:

[
  {
    "Company": [
      {
        "Finance": [
          {
            "StaffName": "Name1",
            "StaffRating": "Rating1"
          }
        ],
        "HR": [
          {
            "StaffName": "Name1",
            "StaffRating": "Rating1"
          },
          {
            "StaffName": "Name2",
            "StaffRating": "Rating2"
          },

           { "StaffName": "Name3",
            "StaffRating": "Rating3"
          }
        ]
      }
    ]
  }
]
json powershell
1个回答
0
投票

这样怎么样......

$JsonDataAdd = @"
{
            "StaffName": "Name3",
            "StaffRating": "Rating3"
}
"@

$JsonData = @"
[
  {
    "Company": [
      {
        "Finance": [
          {
            "StaffName": "Name1",
            "StaffRating": "Rating1"
          }
        ],
        "HR": [
          {
            "StaffName": "Name1",
            "StaffRating": "Rating1"
          },
          {
            "StaffName": "Name2",
            "StaffRating": "Rating2"
          }
        ]
      }
    ]
  }
]
"@ | ConvertFrom-JSON

($JsonData + ($JsonData.Company.HR += (ConvertFrom-Json $JsonDataAdd)))

Company                                         
-------                                         
{@{Finance=System.Object[]; HR=System.Object[]}}



$JsonData.Company

Finance                                   HR                                                                                                               
-------                                   --                                                                                                               
{@{StaffName=Name1; StaffRating=Rating1}} {@{StaffName=Name1; StaffRating=Rating1}, @{StaffName=Name2; StaffRating=Rating2}, @{StaffName=Name3; StaffRat...



$JsonData.Company.Finance

StaffName StaffRating
--------- -----------
Name1     Rating1    



$JsonData.Company.HR

StaffName StaffRating
--------- -----------
Name1     Rating1    
Name2     Rating2    
Name3     Rating3    



$JsonData.Company | ConvertTo-Json
{
    "Finance":  [
                    {
                        "StaffName":  "Name1",
                        "StaffRating":  "Rating1"
                    }
                ],
    "HR":  [
               {
                   "StaffName":  "Name1",
                   "StaffRating":  "Rating1"
               },
               {
                   "StaffName":  "Name2",
                   "StaffRating":  "Rating2"
               },
               {
                   "StaffName":  "Name3",
                   "StaffRating":  "Rating3"
               }
           ]
}


$JsonData | ConvertTo-Json -Depth 4

{
    "Company":  [
                    {
                        "Finance":  [
                                        {
                                            "StaffName":  "Name1",
                                            "StaffRating":  "Rating1"
                                        }
                                    ],
                        "HR":  [
                                   {
                                       "StaffName":  "Name1",
                                       "StaffRating":  "Rating1"
                                   },
                                   {
                                       "StaffName":  "Name2",
                                       "StaffRating":  "Rating2"
                                   },
                                   {
                                       "StaffName":  "Name3",
                                       "StaffRating":  "Rating3"
                                   }
                               ]
                    }
                ]
}
© www.soinside.com 2019 - 2024. All rights reserved.