arrays - PowerShell:如果值为空或为空,则在创建哈希表时跳过名称/值对
问题描述
大家好,首先:感谢您阅读我的问题!
我正在努力为 Invoke-RestMethod 的稍后 convertto-json-object 创建一个嵌套哈希表。
我目前的简化代码是:
@{
"NameOfArray" = @(
@{
"name" = "first name"
"value" = "first value"
},
$( If ( -Not [string]::IsNullOrEmpty($VariableThatMayBeNullOrEmpty) ) {
@{
"name" = "second name"
"value" = $VariableThatMayBeNullOrEmpty
}
} ),
@{
"name" = "third name"
"value" = "third value"
}
)
} | ConvertTo-Json
这是输出:
{
"NameOfArray": [
{
"value": "first value",
"name": "first name"
},
{
},
{
"value": "third value",
"name": "third name"
}
]
}
“NameOfArray”-Array 中有一个空项目,我想跳过创建它 - 如果值为 null 或空...
If-Case 的某些部分似乎正在工作,因为该项目在某种程度上是空的……但它确实存在,我不希望它存在。:/
我的首选输出应如下所示:
{
"NameOfArray": [
{
"value": "first value",
"name": "first name"
},
{
"value": "third value",
"name": "third name"
}
]
}
不存在空项(如果值为 null 或为空)。
有任何想法吗?
非常感谢任何帮助!
提前致谢!
亲切的问候巴巴
解决方案
删除语句$()
周围的显式子表达式if
,然后删除,
数组运算符 - 周围的数组表达式运算符@()
将负责将整个内容转换为数组:
@{
"NameOfArray" = @(
@{
"name" = "first name"
"value" = "first value"
}
if( -Not [string]::IsNullOrEmpty($VariableThatMayBeNullOrEmpty) ) {
@{
"name" = "second name"
"value" = $VariableThatMayBeNullOrEmpty
}
}
@{
"name" = "third name"
"value" = "third value"
}
)
} | ConvertTo-Json
推荐阅读
- react-native - RNLocalize 在 RNLocalize.initialContants 上获取一个未定义的对象
- selenium - 如何使用带有 Selenium 的 ChromeDriver 获取媒体链接
- python - 在python的if语句中使用变量
- ant - 问题:如果原因:名称未定义,则无法创建任务或类型
- excel - 根据单元格值 vba 创建文件夹、子文件夹、另一个子文件夹并保存自定义文件名
- android - Andriod 9 补丁图像不显示内部内容
- kubernetes - K8s nfs 静态 pv 已满,如何使用新备份 nfs 静态 pv 更新“pvc/pv”而不重新安装所有
- c# - 部署到 lambda 函数时无法加载文件或程序集
- mysql - 我关于过滤日期的语法有什么问题
- pandas - 从数据帧系列中切出一个间隔