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

如何使用jq将JSON数组映射为CSV字段表头并导出目标格式数据

用jq实现JSON转指定结构CSV的方法

你可以直接使用以下jq命令完成转换,假设你的JSON数据保存在input.json文件中:

jq -s '
# 计算所有记录中identifier数组的最大长度,确定需要展开的列数
def max_iden_len: map(.identifier | length) | max;
# 固定字段表头
def fixed_head: ["id", "meta_versionId", "meta_lastUpdated", "address"];
# 生成动态的identifier字段表头
def iden_head($len): range($len) | ["identifier\(.)_system", "identifier\(.)_value"] | flatten;
# 单条记录转CSV行逻辑
def to_line($max_len):
  [
    .id,
    .meta.versionId,
    .meta.lastUpdated,
    (.address | join("|")),
    (range($max_len) as $idx | .identifier[$idx] | [.system // "", .value // ""])
  ] | flatten;
# 主执行逻辑
max_iden_len as $max_len
| (fixed_head + iden_head($max_len)), (.[] | to_line($max_len))
# 所有字段加双引号,用逗号拼接为CSV行
| map("\"\(.)\"") | join(",")
' input.json > output.csv

命令说明

  • 用-s参数将所有输入的JSON对象读取为一个数组,先全局计算最长的identifier数组长度,保证能覆盖所有需要展开的列
  • address字段直接用join("|")完成数组元素拼接,符合要求
  • 对于identifier数组,按索引遍历到最大长度,无对应值的位置返回空字符串,保证列对齐
  • 最终输出的每个字段都包裹双引号,完全匹配要求的CSV格式

执行完上述命令后,输出的output.csv就和你给出的期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:06:03