无法使用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值的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段中的 JSON 响应中的对象获取数据

如何使用 PowerShell 和 SQLCMD 获取存储过程返回值?

无法使用 alamofire 打印 json 值

我无法从 python 中的 JSON API 响应中获取值

使用 PowerShell 函数传递和获取值

使用凌空json数据的片段中的Recyclerview?