【问题标题】:Create JSON with Keys from Powershell Array使用 Powershell 数组中的键创建 JSON
【发布时间】:2020-07-13 13:57:13
【问题描述】:

我有这个 Powershell Array 对象,其中包含字符串值

[value1,value2,value3,value4,..etc]

我想将其转换为 JSON 对象,其键名为 value,该键具有数组中的值并使其看起来像这样

[
   { "value" : "value1" },
   { "value" : "value2" },
   { "value" : "value3" },
   { "value" : "value4" },
         ...
]

在PowerShell中可以吗?请记住,数组的长度可能为 50,因此它必须遍历数组 谢谢

【问题讨论】:

    标签: powershell shell powershell-2.0


    【解决方案1】:

    您可以在 PowerShell v3+ 中执行以下操作:

    # Starting Array $arr that you create
    $arr = 'value1','value2','value3'
    
    # Create an array of objects with property named value and value of each array value
    # Feed created objects into the JSON converter
    $arr | Foreach-Object {
        [pscustomobject]@{value = $_}
    } | ConvertTo-Json
    

    您可以在 PowerShell v2 中执行以下操作:

    $json = New-Object -Type 'System.Text.Stringbuilder'
    $null = $json.Append("[")
    $arr | foreach-Object {
        $line = "    {{ ""value"" : ""{0}"" }}," -f $_
        $null = $json.Append("`r`n$line")
    }
    $null = $json.Remove($json.Length-1,1)
    $null = $json.Append("`r`n]")
    $json.ToString()
    

    【讨论】:

    • 我认为投反对票是因为发布者想要 PowerShell v2 解决方案。可能有一个优雅的 json 序列化解决方案。我很难找到任何不对已安装的 .NET 版本做出假设或不需要某些外部库的东西。
    • 我认为投反对票是因为发布者没有发布任何示例代码。发帖人想要的在 PS2.0 中是可能的,我过去为一些 PS2.0 机器编写了自己的自定义 JSON 编码器。然而,由于 PS2.0 自 2017 年(以及自 Server 2008 以来)已被弃用,因此不再支持我建议不要使用它。现在有足够多的替代方案(从 PS3+ 机器代理 PS 会话,为您的脚本推出 VM,使用 docker 容器),因此没有理由继续使用 PSv2
    • @bluuf 我指的是我被否决的原因。因此,我在被否决后添加了一个 v2 解决方案。在这种简单的情况下它工作得很好,但对于其他场景是不可扩展的。我同意你所说的一切。
    猜你喜欢
    • 2014-10-17
    • 2020-10-10
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多