PowerShell:如果值为 null 或为空,则在创建哈希表时跳过 name/value-pair
PowerShell: Skip name/value-pair while creating hashtable if value is null or empty
大家好,首先:感谢阅读我的问题!
我正在为稍后的 convertto-json-Invoke-RestMethod 对象创建一个嵌套哈希表。
我目前的简化代码是:
@{
"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”数组中有一个空项,我想跳过创建它的过程 - 如果值为 null 或空...
If-Case 的某些部分似乎有效,因为该项目在某种程度上是空的...但它确实存在,我不希望它存在。 :/
我的首选输出应如下所示:
{
"NameOfArray": [
{
"value": "first value",
"name": "first name"
},
{
"value": "third value",
"name": "third name"
}
]
}
没有空项目(如果值为 null 或空)。
有什么想法吗?
非常感谢任何帮助!
提前致谢!
亲切的问候
吧吧
删除 if
语句周围的显式子表达式 $()
,然后删除 ,
数组运算符 - 周围的 array-expression 运算符 @()
将采用无论如何都要把整个东西变成一个数组:
@{
"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
大家好,首先:感谢阅读我的问题!
我正在为稍后的 convertto-json-Invoke-RestMethod 对象创建一个嵌套哈希表。
我目前的简化代码是:
@{
"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”数组中有一个空项,我想跳过创建它的过程 - 如果值为 null 或空...
If-Case 的某些部分似乎有效,因为该项目在某种程度上是空的...但它确实存在,我不希望它存在。 :/
我的首选输出应如下所示:
{
"NameOfArray": [
{
"value": "first value",
"name": "first name"
},
{
"value": "third value",
"name": "third name"
}
]
}
没有空项目(如果值为 null 或空)。
有什么想法吗?
非常感谢任何帮助!
提前致谢!
亲切的问候 吧吧
删除 if
语句周围的显式子表达式 $()
,然后删除 ,
数组运算符 - 周围的 array-expression 运算符 @()
将采用无论如何都要把整个东西变成一个数组:
@{
"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