如何用PowerShell将嵌套JSON文件转换为指定格式的CSV?
解决Azure DevOps发布JSON转指定列头CSV的问题
你的原命令问题出在多余的ConvertFrom-Csv步骤——从JSON解析出来的是PowerShell对象数组,不是CSV格式的文本,用这个命令会把对象错误当成CSV行处理,导致列名混乱。另外Out-File不如Export-Csv适合生成标准CSV文件。
直接用下面的步骤修正:
先确认JSON结构里的属性名
先运行以下命令查看嵌套value数组里的对象属性,方便你确定要提取的列:(Get-Content -Path "C:\Test.json" | ConvertFrom-Json).value[0] | Get-Member -MemberType NoteProperty提取指定列并导出CSV
假设你需要的列头是ReleaseId, ReleaseName, CreatedDate, Creator, Status,其中Creator是嵌套在createdBy.displayName里的属性,用计算属性提取:# 解析JSON并展开value数组 $releaseData = (Get-Content -Path "C:\Test.json" | ConvertFrom-Json).value # 选择指定列(含嵌套属性)并导出CSV $releaseData | Select-Object -Property ` ReleaseId, ReleaseName, @{Name='Creator'; Expression={$_.createdBy.displayName}}, CreatedDate, Status | Export-Csv -Path "C:\Test.csv" -NoTypeInformation -Encoding UTF8关键参数说明
-NoTypeInformation:去掉CSV文件开头的PowerShell类型注释,让CSV更标准-Encoding UTF8:确保导出的CSV支持中文等非ASCII字符,避免乱码
如果你的嵌套属性结构不同,只需要调整计算属性的Expression部分即可,比如$_.environment.name这种嵌套路径都能这么处理。
内容的提问来源于stack exchange,提问作者mystack
相关产品推荐
相关产品推荐

