如何检查JSON数组中的单个属性是完全相同的

时间:2016-03-28 00:33:53

标签: json powershell

我正在尝试使用PowerShell来确定JSON数组中的单个属性是否完全相同。

这是我的JSON:

{
    "project": 1,
    "info": {
        "things": [
            { "thingId": 1, "status": "success" },
            { "thingId": 2, "status": "success" },
            { "thingId": 3, "status": "failure" }
        ]
    }
}

鉴于JSON有效负载,我试图返回TRUEFALSE if:

  1. things为空/空 - TRUE(无需检查,所以我们没问题。)
  2. things存在并且有一些数据...... 所有 status属性等于"success" - TRUE
  3. else FALSE
  4. 对于此示例,我们使用以下语法:

    (Invoke-RestMethod -Uri 'https://my.api.com/something/here' -Method Get).info.<not sure of the rest>
    

1 个答案:

答案 0 :(得分:1)

对我来说似乎很简单(只要“null / empty”表示空数组或字符串,而不是空对象)。

$json = Invoke-RestMethod -Uri 'https://my.api.com/something/here' -Method Get
-not $json.info.things -or $json.info.things.status -notcontains 'failure'

如果您遇到PowerShell v2,请使用

替换第二个子句
@($json.info.things | Select-Object -Expand status) -notcontains 'failure'

如果successfailure以外的其他州可以替换为以下内容:

@($json.info.things | ? {$_.status -eq 'success'}).Count -eq $json.info.things.Count