Скрипт Powershell для добавления в массив JSON - PullRequest
0 голосов
/ 30 марта 2019

Я изо всех сил пытаюсь добавить новый элемент в существующий массив JSON, используя сценарии PowerShell. Вот структура файла 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"
          }
        ]
      }
    ]
  }
]

1 Ответ

0 голосов
/ 31 марта 2019

Как на счет этого ...

$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"
                                   }
                               ]
                    }
                ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...