我正在尝试使用 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
在一列中收集每个 uid 的 s。所以是这样的:
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