Я пытаюсь автоматизировать некоторые конвейеры данных с помощью Powershell, но я застрял с преобразованием списка JSON в одну ячейку на строку в файле CSV.Надеюсь, что некоторые из вас могут помочь мне.
JSON, который я получаю, выглядит следующим образом:
{"result": [
{
"uid": "1",
"EducationHistory": []
},
{
"uid": "2",
"EducationHistory": []
},
{
"uid": "3",
"EducationHistory": []
},
{
"uid": "4",
"EducationHistory": {
"10466632": {
"euid": 10466632,
"degree": "Highschool",
"educationLevel": null
},
"10466634": {
"euid": 10466634,
"degree": "Law",
"educationLevel": "batchelor"
},
"10466635": {
"euid": 10466635,
"degree": "Law",
"educationLevel": "master"
}
}
},
{
"uid": "5",
"EducationHistory": {
"10482462": {
"euid": 10482462,
"degree": "IT",
"educationLevel": "master"
}
}
}
]
}
Что я хочу сделать, это собрать educationLevel
s в UID в одном столбце,Итак, что-то вроде этого:
uid | educationLevel
----+------------------
1 |
2 |
3 |
4 | barchelor, master
5 | master
Обычно я бы хотел, чтобы Expandproperty опустился до более низкого уровня, но в этом случае это не работает, потому что каждая запись EducationHistory стоит за euid для этой конкретной записи.Расширение каждого из них, как в примере ниже, не работает из-за количества записей.
Так что я думаю, что мне нужно что-то вроде петли, но я не знаю как.Надеюсь, ты сможешь мне помочь.Первый пост здесь и новичок в Powershell, так что я надеюсь, что мой вопрос ясен.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Код для одной записи, например:
$json = Get-content -raw -path C:\TEMP\File.json
(ConvertFrom-Json -InputObject $json).result |
Select-Object uid,
#Expand one of the entries:
@{Name = "Edu.Level";E={$_.EducationHistory | Select-Object -
expandproperty 10466632 |Select-Object -expandpropert degree }} |
Format-Table