我正在尝试使用PowerShell来确定JSON数组中的单个属性是否完全相同。
这是我的JSON:
{
"project": 1,
"info": {
"things": [
{ "thingId": 1, "status": "success" },
{ "thingId": 2, "status": "success" },
{ "thingId": 3, "status": "failure" }
]
}
}
鉴于JSON有效负载,我试图返回TRUE
或FALSE
if:
things
为空/空 - TRUE
(无需检查,所以我们没问题。)things
存在并且有一些数据...... 所有 status
属性等于"success"
- TRUE
。FALSE
对于此示例,我们使用以下语法:
(Invoke-RestMethod -Uri 'https://my.api.com/something/here' -Method Get).info.<not sure of the rest>
答案 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'
如果success
和failure
以外的其他州可以替换为以下内容:
@($json.info.things | ? {$_.status -eq 'success'}).Count -eq $json.info.things.Count