Вывод JSON с использованием powershell в цикле ForEach - PullRequest
0 голосов
/ 06 ноября 2019

Друзья! Начал работать с powershell и столкнулся с проблемой. Мне нужно вывести значения некоторых переменных в строке формата JSON в цикле. Для этого я использую следующий код:

.....
    foreach ($value in $memoryLast5min)
    {
        $valueInt = [convert]::ToInt32($value, 10);   
        if ($valueInt -ge $500MB)
        {
            $index = [array]::IndexOf($memoryLast5min, $value);        
            $JSON += @{'problemUsers' = @(
                   @{
                        "userName"       = $userNames[$index]
                        "memoryLast5min" = $value
                        "readLast5min"   = $readLast5min[$index]
                        "writeLast5min"  = $writeLast5min[$index]
                    } 
                ) 
            } | ConvertTo-JSON;
        }
    }
.....
return $JSON

В переменной $ JSON я получаю следующий результат:

{
    "problemUsers":  [
                         {
                             "userName":  "User1",
                             "writeLast5min":  29,
                             "memoryLast5min":  181,
                             "readLast5min":  25
                         }
                     ]
}{
    "problemUsers":  [
                         {
                             "userName":  "User2",
                             "writeLast5min":  80,
                             "memoryLast5min":  396,
                             "readLast5min":  74
                         }
                     ]
}{
    "problemUsers":  [
                         {
                             "userName":  "User3",
                             "writeLast5min":  32,
                             "memoryLast5min":  169,
                             "readLast5min":  29
                         }
                     ]
}

Но мне нужен этот результат:

{
    "problemUsers":  [
                         {
                             "userName":  "User1",
                             "writeLast5min":  29,
                             "memoryLast5min":  181,
                             "readLast5min":  25
                         },
                         {
                             "userName":  "User2",
                             "writeLast5min":  80,
                             "memoryLast5min":  396,
                             "readLast5min":  74
                         },
                         {
                             "userName":  "User3",
                             "writeLast5min":  32,
                             "memoryLast5min":  169,
                             "readLast5min":  29
                         }
                     ]
}

Пожалуйста, помогите мне исправить код

1 Ответ

3 голосов
/ 06 ноября 2019

Построить структуру данных. Когда вы закончите , конвертируйте в JSON.

$data = [pscustomobject]@{
    problemUsers = @()
}

foreach ($value in $memoryLast5min)
{
    $valueInt = [convert]::ToInt32($value, 10);   
    if ($valueInt -ge $500MB)
    {
        $index = [array]::IndexOf($memoryLast5min, $value) 
        $data.problemUsers += @{
            userName       = $userNames[$index]
            memoryLast5min = $value
            readLast5min   = $readLast5min[$index]
            writeLast5min  = $writeLast5min[$index]
        }
    } 
}

$json = $data | ConvertTo-Json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...