Преобразование объекта массива JSON в String в Powershell
Я работаю с JSON, который выглядит так:
[
{
"Ack": "no",
"Rule": "dont",
"Tags": [
"server"
],
"Type": "blue"
},
{
"Ack": "no1",
"Rule": "knock",
"Tags": [
"yellow",
"green"
],
"Type": "multiplecolour"
}
]
Мне нужно преобразовать массив Tags в строку, разделенную запятыми [и заменить массив преобразованной строкой в файле JSON]. Я пробовал конвертировать из JSON, но я изо всех сил пытаюсь преобразовать массив в строку чистым способом, все еще изучаю PS, поэтому, пожалуйста, терпите меня.
1 ответ
Решение
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
требуются для принудительного перечисления результатов в виде массива объектов через конвейер.