从 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
很好地拆分了它们。
这似乎应该是直截了当的,但我不确定为什么 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
很好地拆分了它们。