powershell - Powershell - 从 PSObject 的多行(或多个 JSON 数组项)中的字段获取非空值数组?
问题描述
我有一些这样的 JSON(来自 PSObject):
[
{
"cf_workflow_1": 1212,
"cf_workflow_2": null,
"cf_workflow_3": null
},
{
"cf_workflow_1": null,
"cf_workflow_2": 9797,
"cf_workflow_3": null
},
{
"cf_workflow_1": 6262,
"cf_workflow_2": null,
"cf_workflow_3": null
}
]
我想拉出一个简单的数组:
(1212,9797,6262)
我该怎么做呢?
这是一些可以使用的示例代码:
$tickets = @"
[
{
"cf_workflow_1": 1212,
"cf_workflow_2": null,
"cf_workflow_3": null
},
{
"cf_workflow_1": null,
"cf_workflow_2": 9797,
"cf_workflow_3": null
},
{
"cf_workflow_1": 6262,
"cf_workflow_2": null,
"cf_workflow_3": null
}
]
"@
$ticketsObject = $tickets | ConvertFrom-Json
#Show the ticket data
$ticketsObject | Format-Table -AutoSize
#Create an array to hold all the non-null workflow numbers
#It should eventually contain the value (1212,9797,6262)
$workflowNumbers = @()
#Not sure what to do here to return only the non-null workflow numbers as an array?
$workflowNumbers = $ticketsObject | foreach{$_}
解决方案
这有效:
$ticketsObject |
ForEach-Object {$_.Psobject.properties |
where-Object {$_.Name -like 'cf*' -and $_.Value } | select -expand Value}
想法是查看每个对象的属性(仅 cf* 对象)以及具有值的对象,然后仅获取值。
推荐阅读
- angular - 如何从组件访问正文
- c# - 为什么我不能在带有 inline { get; 的变量之前使用 [Space(15)] 放; }?
- c - 如何使用 CMake 将我的库与 czmq 链接
- tensorflow - 我们如何裁剪派生变量,以便相应地裁剪可训练值的值
- python - 如何使用 python 在 aws s3 预签名的 url 中隐藏我的访问密钥
- html - 滑块在页面中未正确呈现
- python - 如何将调查的答案存储在 python 数据框中
- ios - 为什么使用情节提要在 UIScrollView 中不显示内容
- node.js - RabbitMQ 重新连接逻辑不适用于 RabbitMQ 服务器的突然重启
- android - 使用 Coroutines kotlin 创建顺序请求