遍历JSON对象,返回特定对象

时间:2019-06-28 18:15:50

标签: powershell

我正在使用Azure Devops,并且想遍历拉取请求列表。我正在使用this API request来检索拉取请求列表。

当我检查URL时,我看到:

enter image description here

这是正确的。我有3个开放请求请求。我要做的是检查每个对象的特定属性sourceRefName

有匹配项时,我想返回完整的对象:

enter image description here

我尝试过:

$listOfPullRequestsURL = "https://dev.azure.com/*****/*****/_apis/git/repositories/*****/pullrequests?api-version=5.0"
$listOfPullRequests = Invoke-RestMethod -Uri $listOfPullRequestsURL -Headers @{Authorization = $pat } -Method Get
Write-Host $listOfPullRequests
Write-Host $listOfPullRequests | ConvertFrom-Json

ForEach ($object in $listOfPullRequests) {
    Write-Host "### OBJECT ###"
    Write-Host $object
    Write-Host $object.sourceRefName
}

结果是:

enter image description here

如何浏览每个对象?是否可以基于1属性返回整个对象?

2 个答案:

答案 0 :(得分:1)

$listOfPullRequestsURL = "https://dev.azure.com/****/****/_apis/git/repositories/****/pullrequests?api-version=5.0"
$listOfPullRequests = Invoke-RestMethod -Uri $listOfPullRequestsURL -Headers @{Authorization = $pat } -Method Get

$listOfPullRequests.value | ForEach-Object {
    if ($_.sourceRefName -eq $env:BUILD_SOURCEBRANCH) {
        Write-Host $_
    }
}

这显示了正确的JSON对象。

答案 1 :(得分:0)

我知道您已经照顾好了。

只想在此处添加-为避免这些问题,我个人认为这样做更干净,使用哈希表的麻烦也更少。

在Powershell v6中,很容易使用内置的ConvertFrom-Json标志-AsHashtable转换为哈希表。

$hashPullRequests = $listOfPullRequests | ConvertFrom-Json -AsHashtable

,然后像其他哈希表一样遍历$hashPullRequests