在 Powershell 中将 JSON 数组对象转换为字符串
Convert JSON array object to String in Powershell
我正在使用 JSON 看起来像这样的:
[
{
"Ack": "no",
"Rule": "dont",
"Tags": [
"server"
],
"Type": "blue"
},
{
"Ack": "no1",
"Rule": "knock",
"Tags": [
"yellow",
"green"
],
"Type": "multiplecolour"
}
]
我需要将 Tags 数组转换为逗号分隔的字符串 [并用 JSON 文件中转换后的字符串替换该数组]。我已经尝试从 JSON 转换,但我正在努力以干净的方式将数组转换为字符串,仍在学习 PS 所以请耐心等待。
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
编辑:注意(正如@mklement0 指出的那样),ConvertFrom-Json
周围的括号是 force the enumeration of the results as an array 通过管道的对象所必需的。
我正在使用 JSON 看起来像这样的:
[
{
"Ack": "no",
"Rule": "dont",
"Tags": [
"server"
],
"Type": "blue"
},
{
"Ack": "no1",
"Rule": "knock",
"Tags": [
"yellow",
"green"
],
"Type": "multiplecolour"
}
]
我需要将 Tags 数组转换为逗号分隔的字符串 [并用 JSON 文件中转换后的字符串替换该数组]。我已经尝试从 JSON 转换,但我正在努力以干净的方式将数组转换为字符串,仍在学习 PS 所以请耐心等待。
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
编辑:注意(正如@mklement0 指出的那样),ConvertFrom-Json
周围的括号是 force the enumeration of the results as an array 通过管道的对象所必需的。