在上面的示例中,我想从“ System.WorkItemType”中获取值“ Bug”
使用
$response = Invoke-RestMethod -Url $someUri -Method Get -ContentType "application/json" -Headers $headers
$wit = response.fields.System.WorkItemType
因为点/句点弄乱了它,所以不起作用。
在javascript中有这个question and answer,但在Powershell中不起作用。
使用正则表达式将下划线替换为下划线似乎太牵强了(我没有使它起作用,但是使用了-match -convertFrom-Json -replace -convertTo-Json,所以也许这是错误的吗?
所以我的问题很简单:如何从“ System.WorkItemType”键中获取“错误”值? (错误可能是其他字符串...)
答案 0 :(得分:7)
如果将属性名称放在""
或''
中,则应该能够找到所需的内容:
$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'
如果需要转义双引号,请使用`
grave accent,在PowerShell中称为 backtick 。
"area path = $($j.fields.`"System.AreaPath`")"