访问从JSON生成的PS自定义对象属性中的值

时间:2016-06-20 17:38:20

标签: json powershell pscustomobject

对于像这样的JSON:

{
"Tours": [{
    "Code": "r",
    "Name": "Tour 1",
    "Tournaments": [{
        "Number": "464",
        "Title": "Open Tournament 1"
    },
    {
        "Number": "047",
        "Title": "Open Tournament 2"
    }]
},
{
    "Code": "s",
    "Name": "Tour 2",
    "Tournaments": [{
        "Number": "524",
        "Title": "Tournament 3"
    },
    {
        "Number": "009",
        "Title": "Tournament 4"
    }]
}]
}

转换为PS自定义对象并保存在$ data变量中时,我可以访问'锦标赛'特定的游览'像这样:

$data.Tours[0].Tournaments
$data.Tours[1].Tournaments

但是,是否可以访问'锦标赛'属性和值通过指定' Code'或者'姓名'在' Tours'?下的价值观这样的事情,也许:

$data.Tours.Code['r'].Tournaments

实际上,在PS脚本中,我想通过' Code'过滤数据。在' Tours'并获得基础'锦标赛' (参加'锦标赛'特定'代码'''')。

1 个答案:

答案 0 :(得分:1)

您需要执行以下操作:

$data.Tours | Where-Object { $_.Code -eq 'r' } | Select-Object -ExpandProperty 'Tournaments'

要获取连接代码和锦标赛号码列表(代码为" r"),您可以这样做:

$data.Tours | Where-Object { $_.Code -eq 'r' } | ForEach-Object { $Code = $_.Code; $_.Tournaments | ForEach-Object { $Code + $_.Number }}