如何在PowerShell中调用GET API并将返回JSON导出为CSV
解决方案
1. PowerShell调用API的修复方案
报错的原因是PowerShell默认将curl设为内置命令Invoke-WebRequest的别名,该别名不支持原生curl的-X参数,你可以选择以下任意一种方案执行调用:
方案一:推荐使用PowerShell原生REST请求命令(适配性最好)
# 构造请求头 $headers = @{ "Content-Type" = "application/json" "Accept" = "application/json" "Authorization" = "Bearer 替换成你的实际AccessToken" } # 发送GET请求,返回结果会自动将JSON转换为PowerShell对象 $response = Invoke-RestMethod -Uri "https://www.myWebsite.com/api/orders" -Method Get -Headers $headers
方案二:使用原生curl命令
如果要沿用原curl的参数写法,直接调用系统原生curl程序即可,注意PowerShell的换行符为反引号(`)而非反斜杠:
curl.exe -X GET ` -H 'Content-Type: application/json' ` -H 'Accept: application/json' ` -H 'Authorization: Bearer 替换成你的实际AccessToken' ` https://www.myWebsite.com/api/orders
2. JSON结果转换为CSV保存
如果用了上面的方案一(Invoke-RestMethod),返回结果已经自动完成JSON解析,直接导出即可:
# 导出为CSV文件,NoTypeInformation参数用于去掉CSV头部的冗余类型描述行 $response | Export-Csv -Path "订单数据.csv" -Encoding UTF8 -NoTypeInformation
如果用了方案二的原生curl,需要先将返回的JSON字符串转换为PowerShell对象再导出:
# 先获取JSON字符串并转换 $jsonStr = curl.exe -X GET ` -H 'Content-Type: application/json' ` -H 'Accept: application/json' ` -H 'Authorization: Bearer 替换成你的实际AccessToken' ` https://www.myWebsite.com/api/orders $response = $jsonStr | ConvertFrom-Json # 导出CSV $response | Export-Csv -Path "订单数据.csv" -Encoding UTF8 -NoTypeInformation
注意事项
如果返回的JSON存在嵌套层级的结构,需要先手动展开嵌套字段再导出,示例:
# 假设返回结果里的user_info是嵌套对象,包含name、phone字段,需要手动映射 $response | Select-Object order_id,create_time,total_amount,` @{Name="下单人姓名";Expression={$_.user_info.name}},` @{Name="下单人电话";Expression={$_.user_info.phone}} | Export-Csv -Path "订单数据.csv" -Encoding UTF8 -NoTypeInformation
内容的提问来源于stack exchange,提问作者Depth of Field
相关产品推荐
相关产品推荐

