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

Windows PowerShell中JSON转CSV遇System.Object[]问题求助

解决PowerShell将嵌套数组JSON转换为CSV的问题

嘿,折腾了3天肯定够闹心的!你的JSON结构有点特殊——它是一个包含二维数组的对象,直接用ConvertFrom-Json接Export-Csv肯定行不通,因为Export-Csv需要的是带属性的PowerShell对象,而不是纯数组列表。我来帮你搞定这个转换:

问题分析

你的JSON里,inputFile是一个二维数组:

  • 第一个子数组是CSV的表头(Column1到Column10)
  • 后面的子数组是对应的数据行

所以核心是把这些数组转换成PowerShell能识别的自定义对象,再导出成CSV。

完整解决方案代码

# 读取并解析JSON文件(替换成你的实际文件路径)
$jsonData = Get-Content 'path.json' -Raw | ConvertFrom-Json

# 提取表头和数据行
$columnHeaders = $jsonData.inputFile[0]
$dataRows = $jsonData.inputFile | Select-Object -Skip 1

# 将每一行数据转换为带表头属性的自定义对象
$csvEntries = $dataRows | ForEach-Object {
    $currentRow = $_
    $entry = [PSCustomObject]@{}
    # 遍历表头,给对象添加对应属性和值
    for ($i = 0; $i -lt $columnHeaders.Count; $i++) {
        $entry | Add-Member -MemberType NoteProperty -Name $columnHeaders[$i] -Value $currentRow[$i]
    }
    $entry
}

# 导出到CSV文件(替换成你想要的输出路径)
$csvEntries | Export-Csv -Path 'output.csv' -NoTypeInformation -Encoding UTF8

代码说明

  1. 读取解析JSON:Get-Content -Raw确保一次性读取整个JSON文件,避免换行问题,再用ConvertFrom-Json转成PowerShell对象。
  2. 分离表头和数据:$jsonData.inputFile[0]取第一个数组作为表头,Select-Object -Skip 1跳过表头,剩下的都是数据行。
  3. 转换为自定义对象:遍历每一行数据,创建PSCustomObject,然后根据表头给对象添加对应的属性和值——这一步是让Export-Csv能正确识别列的关键。
  4. 导出CSV:-NoTypeInformation会去掉CSV开头的PowerShell类型注释,-Encoding UTF8保证导出的文件编码正确。

运行这段代码后,你就能得到一个标准的CSV文件,包含正确的表头和两行数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:05:10