【问题标题】:PowerShell: Skip name/value-pair while creating hashtable if value is null or emptyPowerShell:如果值为空或为空,则在创建哈希表时跳过名称/值对
【发布时间】:2020-12-29 07:16:02
【问题描述】:

大家好,首先:感谢您阅读我的问题!

我正在努力为 Invoke-RestMethod 创建一个嵌套的哈希表,以便以后转换为 JSON 对象。

我现在的简化代码是:

@{
  "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 或为空)。

有什么想法吗?

非常感谢任何帮助!

提前致谢!

亲切的问候 粑粑

【问题讨论】:

    标签: arrays powershell hashtable skip isnullorempty


    【解决方案1】:

    删除 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
    

    【讨论】:

    • 哇。那真是太棒了,而且绝对正确!非常感谢您,先生!
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2021-06-29
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多