从 json 混合类型中获取第一个不为 false 的值

Get first value that is not false from json mixed types

这似乎应该是直截了当的,但我不确定为什么 Powershell 有问题。

我正在从 Node.js 获取数据并将其转换为 JSON 然后我想获取第一个不是 false.

的对象
(Invoke-WebRequest -UseBasicParsing -Uri "https://nodejs.org/dist/index.json").Content |
    ConvertFrom-Json | ? { $_.lts -ne 'False' }

我也试过了,也没用:

| ? { -not (-not $_.lts) }

我知道上面的内容实际上并没有给我第一个值。我还没有找到那个解决方案。但能帮上忙也太好了!

数据集是这样的:

[
    {"lts": false},
    {"lts": 'Carbon'}
]

You can see the complete data set here.

更新

当我将 JSON 值设置为一个变量时,它起作用了。奇怪。

Invoke-WebRequest -UseBasicParsing -Uri 'https://nodejs.org/dist/index.json' `
    |% Content `
    | ConvertFrom-Json `
    |% { $_ } `
    |? lts -ne $False `
    ;

ConvertFrom-Json 将 JSON 数组转换为 Object[] ,必须分解才能逐条记录处理。 ConvertFrom-Json 之后的 ForEach-Object 很好地拆分了它们。