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

如何循环处理curl GET请求输出,转存JSON后再转换为CSV文件?

解决多个独立JSON对象转CSV的问题

先修复现有output.json的格式

你现在的output.json里是一堆独立的JSON对象(比如{...}{...}),不是合法的JSON数组,所以在线工具处理不了。用以下命令把它转成合法数组:

sed -i '1s/^/[/; $s/$/]/; s/}{/},{/g' output.json
  • 解释:给文件开头加[,结尾加],把每个对象之间的}{换成},{,这样整个文件就变成一个包含所有对象的JSON数组了。

用jq转成CSV

用jq(Linux/macOS常用的JSON处理工具,没有的话用包管理器装,比如apt install jq或brew install jq)来转CSV,比在线工具靠谱。

假设你的每个JSON对象里要提取的字段是id、name、details.address这类,命令如下:

# 替换成你实际需要的字段
jq -r '.[] | [.id, .name, .details.address] | @csv' output.json > output.csv
  • 解释:
    • .[]:遍历数组里的每个JSON对象
    • [.id, .name, .details.address]:指定要导出的字段,嵌套字段用.分隔
    • @csv:把字段转换成CSV格式
    • -r:输出原始字符串(避免CSV里的字段带多余双引号)

优化原脚本,避免再生成无效JSON

原来的curl命令直接把每个页面的JSON追加到文件,导致格式错误。改成下面的方式,直接生成合法的JSON数组:

TOKEN="value123"

# 一次性获取所有页面并合并成数组
curl -k \
--header "Auth-detials: $TOKEN" \
--header "Content-Type: application/vnd.api+json" \
"https://someapi.com/api/details?page%5Bnumber%5D={1..10}" | jq -s '.' > output.json
  • 这里curl的{1..10}会自动展开成10个请求,jq -s '.'把所有返回的JSON对象合并成一个数组,直接生成合法的output.json。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:50:27