У меня есть файл JSON в формате ниже:
[
{
"id": "12345",
"name": "test_group",
"members":
[
{
"id": "11111",
"name": "test_member_1"
},
{
"id": "22222",
"name": "test_member_2"
},
{
"id": "33333",
"name": "test_member_3"
}
]
}
]
Мое требование - преобразовать их в формат ниже / вывод в CSV:
groupId,groupName,memberId,memberName
12345,test_group,11111,test_member_1
12345,test_group,22222,test_member_2
12345,test_group,33333,test_member_3
Я могу получитьЗначения индекса массива в виде объединенных строк в одном столбце с использованием приведенного ниже кода, но требуется вывод только в указанном формате:
$jsonfile = 'C:\newjsonfile.json'
$outputcsv = 'C:\newcsvfile.csv'
$fields=@(
@{Name='groupId';Expression={$_.id}}
,@{Name='groupName';Expression={$_.name}}
,@{Name='memberId';Expression={$_.members.id, -join '|~|'}}
,@{Name='memberName';Expression={$_.members.name -join '|~|'}}
)
(Get-Content $jsonfile -Raw | ConvertFrom-Json) |
Select-Object -Property $fields |
Export-Csv $outputcsv -NoTypeInformation -Force
CSV Выход из вышеприведенного запроса:
groupId, groupName, memberId, memberName
----- --------- -------- ----------
12345, test_group, {11111 |~| 22222 |~| 33333}, {test_member_1 |~| test_member_2 |~| test_member_3}
Пожалуйста, помогите / предложитев решении этого запроса в PowerShell.Текущая версия:
PS C:\WINDOWS\system32> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 17134 407