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

PowerShell脚本导出CSV时JSON数组字段显示System.Object[]求助

解决PowerShell导出CSV时数组字段显示System.Object[]的问题

CSV是扁平的表格格式,PowerShell默认处理数组类型字段时,只会输出其类型名System.Object[],而不是实际内容。以下是几种针对性的解决方法:

方法1:手动将数组转换为拼接字符串(推荐,可读性好)

通过Select-Object的计算属性,把数组字段用指定分隔符拼接成单个字符串,替换原字段:

$response = Invoke-RestMethod 'my_api_endpoint.com' -Method 'GET' -Headers $headers

# 处理数组字段(以platforms为例)
$processedData = $response | Select-Object *, @{
    Name = 'platforms'
    Expression = { $_.platforms -join ', ' } # 用逗号+空格拼接数组元素
} -ExcludeProperty platforms

$processedData | Export-Csv "<path>\output.csv" -NoTypeInformation
  • 若有多个数组字段,可在Select-Object中添加多个计算属性,分别处理。
  • 可根据需求修改分隔符,比如-join ';'或-join '|'。

方法2:通过JSON序列化统一处理所有数组字段

如果不想逐个处理数组字段,可先将响应序列化为JSON,再转回自定义对象,此时所有数组会变成JSON格式的字符串,导出CSV时会保留完整结构:

$response = Invoke-RestMethod 'my_api_endpoint.com' -Method 'GET' -Headers $headers

# 序列化+反序列化,将数组转为JSON字符串
$processedData = $response | ConvertTo-Json -Depth 10 | ConvertFrom-Json

$processedData | Export-Csv "<path>\output.csv" -NoTypeInformation
  • 必须指定-Depth参数(值大于API响应的嵌套深度),避免嵌套内容被截断。
  • 这种方式适合后续需要还原数组结构的场景,直接解析CSV中的JSON字符串即可。

方法3:展开数组生成多行数据

如果需要将数组的每个元素单独作为一行(重复其他字段内容),可使用-ExpandProperty:

$response = Invoke-RestMethod 'my_api_endpoint.com' -Method 'GET' -Headers $headers

# 展开platforms数组,每个元素对应一行数据
$processedData = $response | Select-Object -Property * -ExpandProperty platforms

$processedData | Export-Csv "<path>\output.csv" -NoTypeInformation
  • 此方法会将原始对象的非数组字段重复,每个数组元素单独占据一行,适合需要拆分数组进行分析的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:20:14