如何将Powershell调用REST API返回的JSON结果导出为CSV文件
PowerShell 调用API返回JSON数据导出为CSV的实现方法
你可以直接修改原有脚本,先将API返回结果存储到变量,再提取data属性下的记录列表,最终通过Export-Csv导出即可,以下是完整示例:
基础版本:导出全部顶层字段
$uri = "https://www.SomeWebsite.com/api/orders" $headers = @{ 'Content-Type' = 'application/json' 'Authorization' = 'Bearer <MyTokenID>' 'Accept'= 'application/json' } # 将接口返回结果存储到变量,避免重复请求 $apiResponse = Invoke-RestMethod -Uri $uri -Method GET -Headers $headers -Body $body # 直接导出data字段下的所有记录的顶层字段到CSV $apiResponse.data | Export-Csv -Path "订单导出结果.csv" -NoTypeInformation -Encoding UTF8
注意:这个版本导出的嵌套属性(比如attributes、relationships)会显示为对象类型名,如果你需要提取嵌套属性里的具体值,可以用下面的自定义字段版本
自定义字段版本:提取指定字段(含嵌套属性)
如果你需要选择特定字段、或者提取嵌套在attributes里的字段,可以用Select-Object的计算属性实现:
$apiResponse.data | Select-Object ` # 提取顶层字段 @{Name = '记录ID'; Expression = { $_.id }}, @{Name = '记录类型'; Expression = { $_.type }}, # 提取attributes下的嵌套字段,根据实际接口返回的字段名修改即可 @{Name = '订单状态'; Expression = { $_.attributes.Status }}, @{Name = '预约时间'; Expression = { $_.attributes.AppointmentTime }} | Export-Csv -Path "自定义订单导出结果.csv" -NoTypeInformation -Encoding UTF8
额外说明
- 添加
-Encoding UTF8参数是为了避免CSV打开时出现中文乱码,如果你使用PowerShell 7及以上版本,可以替换为-Encoding UTF8NoBOM适配更多编辑器 - 如果你需要保留全部顶层字段、只排除个别不需要的字段,可以用如下写法:
$apiResponse.data | Select-Object * -ExcludeProperty links,relationships | Export-Csv -Path "订单导出结果.csv" -NoTypeInformation -Encoding UTF8
内容的提问来源于stack exchange,提问作者Depth of Field
相关产品推荐
相关产品推荐

