Цикл по объекту JSON, возврат определенного объекта - PullRequest
3 голосов
/ 28 июня 2019

Я использую Devure Azure и хочу просмотреть список запросов на получение.Я использую этот запрос API для получения списка запросов на извлечение.

Когда я проверяю 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

Как мнепройти через каждый объект?И можно ли вернуть весь объект на основе одного атрибута?

Ответы [ 2 ]

1 голос
/ 28 июня 2019
$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.

0 голосов
/ 29 июня 2019

Я понял, ты уже позаботился об этом.

Просто хотел добавить сюда - чтобы избежать этого, лично я считаю, что он более чистый и создает меньше проблем при использовании хеш-таблиц.

В Powershell v6 легко конвертировать в хеш-таблицу с помощью встроенного ConvertFrom-Json flag -AsHashtable.

$hashPullRequests = $listOfPullRequests | ConvertFrom-Json -AsHashtable

, а затем переберите $hashPullRequests, как и любую другую хеш-таблицу.

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