Анализировать значение из JSON, когда ключ содержит точку (точку) в Powershell - PullRequest
0 голосов
/ 13 октября 2018

enter image description here

В приведенном выше примере я хотел бы получить значение "Ошибка" из "System.WorkItemType"

, используя

$response = Invoke-RestMethod -Url $someUri -Method Get -ContentType "application/json" -Headers $headers
$wit = response.fields.System.WorkItemType

не работает, так как точка / точка испортили его.

В javascript есть этот вопрос и ответ , но он не работал в Powershell.

Использование регулярных выражений для замены точки подчеркиванием кажется слишком надуманным (и я не заставил его работать, но использовал -match -convertFrom-Json -replace -convertTo-Json, так что, возможно, это не так?

Итаку меня простой вопрос: как мне получить значение 'Bug' из ключа 'System.WorkItemType'? (ошибка может быть в других строках ...)

1 Ответ

0 голосов
/ 13 октября 2018

Если вы введете имена свойств в "" или '', вы сможете получить то, что ищете:

$json= @'
 { "id" : 9983,
    "rev" : 17,
    "fields" :{
    "System.AreaPath":"Cloud\\Dev Blue Team",
    "System.TeamProject":"Cloud"
    }
}
'@

$j = $Json | convertfrom-json
$j.fields."System.AreaPath"
$J.fields.'System.TeamProject'

, если вам нужно экранировать двойные кавычки, используйте ` серьезный акцент , известный как backtick в PowerShell.

"area path = $($j.fields.`"System.AreaPath`")"
...