通过PowerShell访问JSON数组
我正在尝试使用PowerShell访问包含字符串数组的JSON属性 JSON通过PowerShell访问JSON数组,json,powershell,Json,Powershell,我正在尝试使用PowerShell访问包含字符串数组的JSON属性 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"] }, {
{
"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节点。我的目标是存储这个字符串列表并循环它们
当我检查$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[]}}
我在这里遗漏了什么?您可以使用:
$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)"
}
}
您还没有注意到成员键的末尾包含冒号。否则它会给你错误的结果。你差点让我。。。
members:
键中有一个冒号,这意味着如果这是正确的(我怀疑),您需要执行:ForEach($group中的成员。'members:')
@iRon不敢相信我漏掉了额外的冒号,谢谢。我在属性名中省略了冒号,但奇怪的是,当我运行代码时仍然没有得到任何结果。编辑:nvm,必须刷新我的$json属性。多余的结肠最终成了罪魁祸首。谢谢