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

如何用jq将JSON对象数组转换为带表头的CSV文件

用JQ将JSON转换为带表头且支持字段缺失补全的标准CSV

你之前的命令只处理了数据行,没生成表头,也没处理字段缺失的场景。下面是能满足需求的完整JQ命令:

jq -r '
(map(keys) | add | unique) as $headers
| $headers | @csv
, (.[] | [ $headers[] as $h | .[$h] // null ] | @csv)
' testJson.json

命令说明:

  1. 生成完整表头:(map(keys) | add | unique) 会遍历所有JSON对象的键,合并后去重,得到所有可能的字段列表——哪怕部分对象缺失字段,表头也能包含全部列。
  2. 输出表头行:$headers | @csv 将表头数组转换为符合标准的CSV格式,自动给字符串字段添加引号。
  3. 处理数据行并补全缺失字段:
    • 对每个JSON对象,按表头的顺序提取对应字段的值
    • // null 表示如果字段不存在,就用null填充,确保每行的列数和表头一致
    • @csv 自动处理数据的格式:字符串加引号、数字保持原样,避免手动拼接的格式问题

效果验证

用你提供的示例JSON运行该命令,会直接输出你期望的CSV结果:

"endpoint","date","upUsage","downUsage","upAvgRate","downAvgRate","upMaxRate","downMaxRate"
"APPLE","2022-11-02 12:00",0,18000,0,600,0,800
"BANANA","2022-11-02 12:00",0,17600,0,587,0,693
"CARROT","2022-11-02 12:00",0,8000,0,533,0,533

如果遇到字段缺失的对象(比如某条数据没有downMaxRate),对应位置会自动填充null,保持CSV列数一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:05:34