Изменение файла JSON с использованием данных из CSV в PowerShell - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь изменить некоторые конкретные значения в файле .json на основе двух столбцов в файле .csv. Если текущее значение в файле .json совпадает с значением в левом столбце, я хочу изменить его на значение в правом столбце.

Хотя я впервые с PowerShell, поэтому я пытаюсь понять, как это сделать. Я чувствую, что мое решение не только неверно, но и использует двойной цикл for, когда в этом нет необходимости. Вот что у меня есть.

$jsonData = Get-Content -Path $jsonFile | ConvertFrom-Json
$csvData = Get-Content -Path $csvFile | Select-Object -Skip 1 # Skipping the header

foreach ($jsonItem in $jsonData.'Placeable List') {
    foreach ($csvRow in $csvData) {
        $splitRow = $csvRow -split ","
        $lCol = $splitRow[0]
        $rCol = $splitRow[1]

        $currentItem = $jsonItem.'value'.'Appearance'.'value'
        if ($currentItem -eq $lCol) {
            $currentItem -eq $rCol
        }
    }
}

1 Ответ

0 голосов
/ 30 апреля 2019

Мне удалось понять это.

$csvData  = Get-Content -Path $csvFile | Select-Object -Skip 1 # Skipping the header
$jsonData = Get-Content -Path $jsonFile -raw | ConvertFrom-Json

foreach($csvRow in $csvData) {
    $splitRow = $csvRow -split ","
    $lCol = $splitRow[0]
    $rCol = $splitRow[1]

    foreach($item in $jsonData.'Placeable List'.value) {
        $item.Appearance | % {
            if ($_.value -eq $lCol) {
                $_.value = $rCol
            }
        }
    }
}

$jsonData | ConvertTo-Json -depth 32 | Set-Content $jsonFile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...