在 Powershell 中将 JSON 数组对象转换为字符串

mr *_*i.o 3 arrays powershell json convertto-json

我正在使用如下所示的 JSON:

[
    {
        "Ack":  "no",
        "Rule":  "dont",
        "Tags":  [
                     "server"
                 ],
        "Type":  "blue"
    },

    {
        "Ack":  "no1",
        "Rule":  "knock",
        "Tags":  [
                     "yellow",
                     "green"
                 ],
        "Type":  "multiplecolour"
    }

]
Run Code Online (Sandbox Code Playgroud)

我需要将 Tags 数组转换为逗号分隔的字符串 [并用 JSON 文件中转换后的字符串替换该数组]。我尝试过从 JSON 进行转换,但我正在努力以干净的方式将数组转换为字符串,仍在学习 PS,所以请耐心等待。

Gle*_*enn 6

ConvertFrom-Json可能适合您。以下是将 JSON 字符串转换为 PowerShell 对象数组,然后使用逗号分隔符连接每个对象的标签的示例:

$json = @"
[
    {
        "Ack":  "no",
        "Rule":  "dont",
        "Tags":  [
                     "server"
                 ],
        "Type":  "blue"
    },
    {
        "Ack":  "no1",
        "Rule":  "knock",
        "Tags":  [
                     "yellow",
                     "green"
                 ],
        "Type":  "multiplecolour"
    }
]
"@

(ConvertFrom-Json -InputObject $json) `
    | ForEach-Object { $_.Tags = ($_.Tags -join ","); $_ } `
    | ConvertTo-Json `
    | Out-File -FilePath new.json
Run Code Online (Sandbox Code Playgroud)

编辑:注意(正如 @mklement0 指出的那样),ConvertFrom-Json需要使用括号来强制通过管道将结果枚举为对象数组。

  • 很好,不过值得指出的是 `(...)` 是_必需的_,因为它强制枚举 [`ConvertFrom-Json` 通过管道发送_作为一个整体_的数组](https://github.com/PowerShell /PowerShell/issues/3424)。 (4认同)