You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell将多JSON文件导出为带表头Excel表格求助

解决JSON(含外层嵌套)转带表头CSV的PowerShell方案

核心问题分析

你的JSON数据实际嵌套在dataCollection数组中,之前的代码没有定位到这个数组,反而直接处理外层对象导致输出异常;同时错误地用Select-Object把整个对象塞进单个列,造成内容挤在一个单元格。


单个JSON文件处理代码

# 替换为你的实际文件路径
$jsonInput = "C:\example\your-data.json"
$csvOutput = "C:\example\output.csv"

# 读取并解析JSON,提取目标数据数组
$jsonData = Get-Content -Raw -Path $jsonInput | ConvertFrom-Json
$targetItems = $jsonData.dataCollection

# 导出为带表头的CSV
$targetItems | Export-Csv -Path $csvOutput -NoTypeInformation -Encoding Unicode -Delimiter "`t"

代码说明

  • Get-Content -Raw:一次性读取完整JSON内容,避免逐行读取破坏JSON结构导致解析失败
  • ConvertFrom-Json:将JSON字符串转换为PowerShell可操作的对象,此时$jsonData包含dataCollection属性(对应JSON里的数组)
  • $jsonData.dataCollection:直接提取数组内的每个数据对象,这些对象的属性(objectID/randomID等)会自动作为CSV表头
  • Export-Csv:自动将每个对象转为一行数据,-NoTypeInformation移除CSV开头的无用类型注释,-Delimiter "t"用制表符分隔(适配Excel直接识别列),-Encoding Unicode`避免中文乱码

多个JSON文件批量处理代码

如果需要合并文件夹下所有JSON文件的数据到同一个CSV:

# 替换为你的实际文件夹和输出路径
$jsonFolder = "C:\example\json-files"
$csvOutput = "C:\example\merged-output.csv"

# 遍历所有JSON文件,合并数据
$allItems = Get-ChildItem -Path $jsonFolder -Filter "*.json" | ForEach-Object {
    $jsonContent = Get-Content -Raw -Path $_.FullName | ConvertFrom-Json
    $jsonContent.dataCollection
}

# 导出合并后的数据
$allItems | Export-Csv -Path $csvOutput -NoTypeInformation -Encoding Unicode -Delimiter "`t"

为什么之前的代码失效?

  1. 未提取dataCollection数组:直接处理外层对象导致输出@{dataCollection=System.Object[]}这类无效内容
  2. 错误的Select-Object操作:把整个JSON对象塞进名为Name的单列,导致所有数据挤在一个单元格,无法生成正确表头

额外注意事项

  • 如果不同JSON文件的对象属性不一致,Export-Csv会自动汇总所有出现过的表头,缺失属性的单元格留空
  • 用Excel打开生成的CSV时,制表符分隔会被自动识别,无需手动设置分隔符

内容的提问来源于stack exchange,提问作者26elyesa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:35:51