Доступ к массиву JSON через PowerShell - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь получить доступ к атрибуту JSON, который содержит массив строк, используя PowerShell

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "teamName": "Team A",
  "securityGroups": [{
      "name": "Security Group 1",
      "members:": ["abc@mail.com", "def@mail.com", "ghi@mail.com"]
    },
    {
    "name": "Securiy Group 2",
    "members:": ["123@mail.com", "456@mail.com", "789@mail.com"]
  }]
}

PowerShell

$json = Get-Content 'test.json' | ConvertFrom-Json 

ForEach($group in $json.securityGroups)
{
    Write-Host "Team: $($group.name)"

    ForEach($member in $group.members)
    {
        Write-Host "Member: $($member)"
    }
}

Вывод

Team: Security Group 1
Team: Securiy Group 2

Как видите, только имя группы безопасности ( securityGroup.name ) показывается. Я не могу получить доступ к узлу securityGroups.members , который содержит массив строк (содержащих электронные письма). Моя цель - сохранить этот список строк и l oop через них.

Когда я проверяю, как выглядит объект $ json в PS, я получаю следующее:

PS C:\Users\XYZ> $json

id                                   teamName securityGroups                                                                                         
--                                   -------- --------------                                                                                         
00000000-0000-0000-0000-000000000000 Team A   {@{name=Security Group 1; members:=System.Object[]}, @{name=Securiy Group 2; members:=System.Object[]}}

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 08 января 2020

Вы можете использовать это:

$json = Get-Content 'test.json' | ConvertFrom-Json 

ForEach ($group in $json.securityGroups)
{
    Write-Host "Team: $($group.name)"

    ForEach ($member in $group."members:")
    {
        Write-Host "Member: $($member)"
    }
}

Вы не заметили, что ключ участника содержит двоеточие в конце. Иначе это даст вам неверный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...