在PowerShell中使用CSV中的数据修改JSON文件

时间:2019-04-29 21:43:05

标签: json powershell csv

我正在尝试基于.csv文件中的两列来修改.json文件中的某些特定值。如果.json文件中的当前值与左列中的值相同,我想将其更改为右列中的值。

尽管这是我第一次使用PowerShell,所以我一直在努力寻找方法。我觉得我的解决方案不仅是错误的,而且在可能不需要时使用double 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 :(得分:0)

我设法弄清楚了。

$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