【问题标题】:To delete loop inside a variable using powershell使用 powershell 删除变量内的循环
【发布时间】:2020-03-22 06:07:39
【问题描述】:

我确实调用了休息方法并将输出存储在变量 $a 中并使用了 convertTo-json,我想删除不需要的变量和值。 我使用了 $a -replace "variables" -replace "value" 但它不起作用

【问题讨论】:

    标签: json powershell


    【解决方案1】:

    不要尝试将 JSON 作为文本(作为字符串)来操作。

    转换表示Invoke-RestMethod 返回的输入 JSON 的 _objects([pscustomobject] 实例)更容易、更健壮:

    # Assume that $fromJson was obtained as follows:
    #   $fromJson = Invoke-RestMethod ...
    
    $fromJson.variables | ForEach-Object {
      # Replace the property values with the current value's .value property
      # value.
      foreach ($prop in $_.psobject.Properties) {
        $_.($prop.Name) = $prop.Value.value
      }
      $_  # Output the modified object.
    } | ConvertTo-Json
    

    $json.variables 使用member-access enumeration 返回一个包含variables 属性值的数组,ForEach-Object 命令通过将结果对象的属性值替换为.value 属性值来转换结果对象。

    .psobject.Properties 是一种反映任何对象属性的方法,返回的每个属性信息对象都有一个.Name 和一个.Value 属性。

    ConvertTo-Json 将修改后的对象转换回 JSON

    给定以下示例 JSON 输入:

    [
      {
        "variables": {
          "appdata": {
            "value": "x1"
          },
          "appinsta": {
            "value": "y1"
          }      
        }   
      },
      {
        "variables": {
          "appdata": {
            "value": "x2"
          },
          "appinsta": {
            "value": "y2"
          }      
        }   
      }
    ]
    

    以上输出:

    [
      {
        "appdata": "x1",
        "appinsta": "y1"
      },
      {
        "appdata": "x2",
        "appinsta": "y2"
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      相关资源
      最近更新 更多