求助:如何基于员工ID合并多份JSON员工数据文件为单份完整文件
解决PowerShell合并多份员工JSON文件的问题
核心思路
通过员工id字段分组,将不同文件中同一员工的属性合并到单个对象中,最终输出符合要求的JSON结构。
完整PowerShell脚本
# 1. 指定要合并的JSON文件路径(支持通配符或手动指定文件名) $jsonFiles = Get-ChildItem -Path "C:\Your\Json\Files\Directory" -Filter "*.json" # 2. 读取所有文件内容,提取员工对象数据 $allEmployees = @() foreach ($file in $jsonFiles) { $jsonContent = Get-Content -Path $file.FullName -Raw | ConvertFrom-Json $allEmployees += $jsonContent.value } # 3. 按id分组,合并同一员工的所有属性 $mergedEmployees = $allEmployees | Group-Object -Property id | ForEach-Object { $mergedObj = [PSCustomObject]@{} # 遍历组内每个对象,合并属性 foreach ($emp in $_.Group) { foreach ($prop in $emp.PSObject.Properties) { $mergedObj | Add-Member -MemberType NoteProperty -Name $prop.Name -Value $prop.Value -Force } } $mergedObj } # 4. 包装成目标JSON结构并输出 $result = [PSCustomObject]@{ value = $mergedEmployees } $result | ConvertTo-Json -Depth 10 | Out-File -Path "C:\Your\Output\merged_employees.json" -Encoding utf8
关键步骤说明
- 文件读取:用
Get-ChildItem批量获取目标JSON文件,若知道具体文件名,可直接写为$jsonFiles = "file1.json", "file2.json", "file3.json" - 数据汇总:逐个解析JSON文件,提取
value数组内的员工对象,统一存入数组 - 属性合并:按
id分组后,遍历每组内的对象,将所有属性合并到新对象中(-Force参数确保属性重复时自动覆盖,适配无重复属性的场景) - 输出结果:将合并后的员工数组包装为要求的JSON结构,指定
-Depth 10避免嵌套层级不足报错,最后写入目标文件
注意事项
- 确保所有JSON文件格式合法(示例中末尾多余逗号需删除,否则
ConvertFrom-Json会报错) - 替换脚本中的文件路径为实际路径
- 若员工
id存在大小写差异,可修改分组规则为Group-Object -Property { $_.id.ToLower() }统一匹配
内容的提问来源于stack exchange,提问作者GrafVoicu
相关产品推荐
相关产品推荐

