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

如何使用jq将指定JSON转换为以Columns.Id为表头的CSV?

使用jq将指定JSON转换为CSV的解决方案

核心需求回顾

  • 表头取自JSON中Columns数组内各元素的Id字段
  • 数据仅提取Rows数组里的Values对应内容
  • 忽略JSON内其他无关字段

示例JSON输入

{
  "Columns": [
    {"Id": "Name"},
    {"Id": "Age"},
    {"Id": "City"}
  ],
  "Rows": [
    {"Values": ["Alice", 30, "New York"]},
    {"Values": ["Bob", 25, "London"]}
  ],
  "OtherMetadata": "无需处理的字段"
}

期望CSV输出

Name,Age,City
Alice,30,New York
Bob,25,London

可行的jq命令

直接运行以下命令即可完成转换(将input.json替换为你的实际JSON文件路径):

jq -r '
  .Columns | map(.Id) as $headers
  | .Rows | map(.Values) as $rows
  | [$headers] + $rows | map(@csv) | join("\n")
' input.json

命令拆解说明

  • -r:让jq输出原始字符串(避免自动添加多余引号)
  • .Columns | map(.Id):遍历Columns数组,提取每个元素的Id字段,生成表头数组
  • as $headers:将表头数组存入变量,方便后续复用
  • .Rows | map(.Values):遍历Rows数组,提取每行的Values数据,生成二维行数据数组
  • [$headers] + $rows:把表头作为第一行,和所有行数据合并成完整的二维数组
  • map(@csv):对每一行数组应用@csv过滤器,自动处理逗号、引号等特殊字符的转义
  • join("\n"):将所有CSV行用换行符连接,生成最终的CSV文本

特殊情况处理

如果你的JSON中存在带逗号、双引号的字段(比如Values里有"Smith, Jane"),@csv会自动转义为符合CSV规范的格式,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:12:41