You need to enable JavaScript to run this app. 如何使用PowerShell将嵌套JSON转换为逐行展开结构的CSV文件
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell将嵌套JSON转换为逐行展开结构的CSV文件

嵌套结构JSON转CSV的PowerShell实现方案

原有代码的逻辑缺陷

你之前采用Select-Object搭配计算属性的写法,会把当前设备下Test数组的所有IP、Result值作为聚合内容塞到同一个对象的对应字段里,既不会自动拆分成独立行,也没法实现IP和Result逐位置一一匹配的效果。最终输出的对象字段携带数组结构,导出CSV时会把数组内容用分隔符拼接在同一个单元格内,和预期的逐行对应格式完全不符。

完整可运行实现

# 读取本地JSON文件并解析为PowerShell对象
$JsonData = Get-Content '.\Report_202104262250.json' -Raw | ConvertFrom-Json

# 双层遍历完成嵌套结构扁平化
$FlatData = foreach ($deviceEntry in $JsonData) {
    # 遍历当前设备下的所有测试项,为每个测试项生成独立的扁平化对象
    foreach ($testItem in $deviceEntry.Test) {
        [PSCustomObject]@{
            Device       = $deviceEntry.Device
            Test__IP     = $testItem.IP
            Test__Result = $testItem.Result
        }
    }
}

# 将扁平化后的对象导出为标准CSV文件
$FlatData | Export-Csv -Path '.\converted_output.csv' -NoTypeInformation -Encoding UTF8

实际输出效果

代码运行后生成的CSV内容完全匹配你给出的预期格式:

Device,Test__IP,Test__Result
Device1,10.20.3.6,Fail
Device2,10.124.102.100,Fail
Device2,107.12.13.51,Fail

实用提示:导出CSV时添加-NoTypeInformation参数可以避免文件开头写入多余的.NET类型元数据,添加-Encoding UTF8可以保证文件内的中文内容不会出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 02:45:06