当Powershell中键包含点(句点)时,从JSON解析值

时间:2018-10-12 21:24:53

标签: json powershell jsonpath

enter image description here

在上面的示例中,我想从“ 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”键中获取“错误”值? (错误可能是其他字符串...)

1 个答案:

答案 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`")"