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

如何用单条jq命令高效将嵌套JSON转换为指定格式CSV

用单条jq命令实现嵌套JSON到指定CSV的转换

核心思路

通过jq的数组展开与变量绑定,将每个导演与其名下的每部电影逐一配对,直接格式化成分号分隔且行尾带分号的输出,全程在jq内部完成,无需外部循环,保证大数据量下的性能。

示例输入JSON

[
  {
    "regisseur": "Christopher Nolan",
    "movies": ["Inception", "Interstellar", "Dunkirk"]
  },
  {
    "regisseur": "Quentin Tarantino",
    "movies": ["Pulp Fiction", "Kill Bill", "Django Unchained"]
  }
]

最终jq命令

jq -r '.[] | .regisseur as $dir | .movies[] | "\($dir);\(.);"' input.json

命令拆解

  • .[]:展开顶层的导演对象数组,逐个处理每个导演条目
  • .regisseur as $dir:将当前导演的名字存入变量$dir,避免重复读取
  • .movies[]:展开当前导演的电影列表,遍历每一部电影
  • "\($dir);\(.);":拼接字符串,按「导演名;电影名;」的格式输出每一行

输出效果

Christopher Nolan;Inception;
Christopher Nolan;Interstellar;
Christopher Nolan;Dunkirk;
Quentin Tarantino;Pulp Fiction;
Quentin Tarantino;Kill Bill;
Quentin Tarantino;Django Unchained;

特殊场景处理(含特殊字符的字段)

如果导演名或电影名包含分号、引号等特殊字符,可借助@csv过滤器自动处理转义与引号包裹,调整后的命令如下:

jq -r '.[] | .regisseur as $dir | .movies[] | "\($dir | @csv);\(. | @csv);"' input.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:07:11