我有一个JSON对象数组,如下所示:
[
{
"WorkspaceName": "A",
"Users": [
{
"AccessRight": "Admin",
"UserPrincipalName": "John"
},
{
"AccessRight": "Contributor",
"UserPrincipalName": "Jane"
}
]
},
{
"WorkspaceName": "B",
"Users": [
{
"AccessRight": "Admin",
"UserPrincipalName": "John"
}
]
}
]
我想将这个JSON对象数组输出到CSV文件.具体地说,我希望"扩展"用户数组,使其在单独的行上包括其所有属性,从而在各行中"复制"WorkspaceName属性.因此,我希望CSV文件如下所示:
WorkspaceName Users_AccessRight Users_UserPrincipalName
------------- ----------------- -----------------------
A Admin John
A Contributor Jane
B Admin John
我怎样才能做到这一点?具体地说,如何遍历用户数组中的选定属性?虽然在数组用户中总是有相同的属性,但是每个JSON对象在USERS中可能有不同数量的用户.我try 了以下代码,但它只返回USERS_AccessRight和USERS_UserPrimialName的System.Object[],并没有像上面所希望的那样"展开"行.
$obj = @"
[
{
"WorkspaceName": "A",
"Users": [
{
"AccessRight": "Admin",
"UserPrincipalName": "John"
},
{
"AccessRight": "Contributor",
"UserPrincipalName": "Jane"
}
]
},
{
"WorkspaceName": "B",
"Users": [
{
"AccessRight": "Admin",
"UserPrincipalName": "John"
}
]
}
]
"@ | ConvertFrom-Json
$pathToOutputFile = "C:\output.csv"
$flattened = $obj | ForEach-Object {
return [PSCustomObject]@{
WorkspaceName = $_.WorkspaceName
Users_AccessRight = $_.Users.AccessRight
Users_UserPrincipalName = $_.Users.UserPrincipalName
}
}
$flattened | Export-CSV $pathToOutputFile -NoTypeInformation