无法使用powershell获取json值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用powershell获取json值相关的知识,希望对你有一定的参考价值。
这是我的文件结构,我想根据“名称”的值访问Subscription
{
"Topics":
[
{
"Name": "topic1",
"Subscription": "sub1"
},
{
"Name": "topic2",
"Subscription": "sub2"
}
]
}
$json = Get-Content 'path' | Out-String | ConvertFrom-Json
$subscriptions=$json.Topics.Subscription|Where Name -EQ "topic1"
我通过执行以下命令获取名称
$json.Topics.Name
topic1
topic2
$json.Topics.Subscriptions
sub1
sub2
但不知道如何将其保留在where子句中
答案
请尝试以下方法:
$json = @'
{
"Topics":
[
{
"Name": "topic1",
"Subscription": "sub1"
},
{
"Name": "topic2",
"Subscription": "sub2"
}
]
}
'@
$objectFromJson = $json | ConvertFrom-Json
$objectFromJson.Topics | Where-Object Name -eq 'topic1'
以上产量:
Name Subscription
---- ------------
topic1 sub1
如果您只想输出.Subscription
属性值,只需使用
($objectFromJson.Topics | Where-Object Name -eq 'topic1').Subscription
至于你试过的:
$json.Topics.Subscription
这提取了Subscription
属性的值,这些属性仅仅是字符串("sub1"
和"sub2"
),它们没有.Name
属性,因此您的Where Name -EQ "topic1"
过滤器不匹配任何内容。
以上是关于无法使用powershell获取json值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PowerShell 和 SQLCMD 获取存储过程返回值?