首页 > 解决方案 > 具有多级数组的powershell csv到json

问题描述

目前我正在从平面 CSV 中获取数据并将其转换为 json。我可以使用下面的三个数组将其降低两级

CSV 文件包含以下数据。我为实现上述目的而编写的代码是使用数组、powershell 对象和 convertto-json

$ArrayAPPName = @()
$ArrayAPProles = @()
$Arrayserver= @()

$i = 0
foreach ($item in $CSV) {
    if ($i -eq 0) {
        $JSONappname = $($item.'AppName') 
        $JSONapprole = $($item.'ROLE')

    }

    if ($($item.'AppName') -ne $JSONappname) {
        $ArrayAPPName  += [pscustomobject]@{
            AppName = $JSONappname;
            Roles   = $ArrayJSONroles
        }
    }
        $ArrayJSONserver = [pscustomobject]@{
        CPU              = $item.CPU;
        RAM              = ([int]$item.Memory);
        }


    if ($($item.'AppName') -eq $JSONappname) 
    {
        [array]$ArrayJSONroles += [pscustomobject]@{
            Role = $($item.'ROLE');
            Server   = $ArrayJSONserver 
        }
    }
    else {
        [array]$ArrayJSONroles  = [pscustomobject]@{
            Role = $($item.'ROLE');
            Server   = $ArrayJSONserver 
        }
    }  
    $JSONappname = $($item.'AppName')
    $i++
}
$ArrayAPPName  += [pscustomobject]@{
    Name = $JSONappname;
    Roles= $ArrayJSONroles
}

$ArrayAPPName  = [pscustomobject]@{
    Apps = $ArrayAPPName  | Select-Object -Property Name, Roles
}

$ArrayAPPName = $ArrayAPPName | ConvertTo-Json -Depth 10

但是,现在我们遇到了相同角色可以有多个服务器请求的情况。因此对于每个应用程序名称,我们可以有多个应用程序角色,对于每个应用程序角色,我们可以有多个服务器。

{
"Apps":  [
                     {
                         "AppName":  "ABC",
                         "Roles":  [
                                       {
                                           "Role":  "App",
                                           "Server":  [
                                                          {
                                                              "CPU":  "2",
                                                              "Memory":  "1024",
                                                          },
                                                          {
                                                              "CPU":  "2",
                                                              "Memory":  "2084",
                                                           }
                                                       ]
                                        }
                                    ]
                     }
                 ]

}

标签: arraysjsonpowershell

解决方案


推荐阅读