问题描述
大家好,首先:感谢您阅读我的问题!
我正在努力为后来的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": "third name"
}
]
}
缺少空项目(如果value为null或空)。
有什么想法吗?
我们非常感谢您的帮助!
谢谢!
亲切问候 BaBa
解决方法
删除$()
语句周围的显式子表达式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