将嵌套 JSON 数据精准转换为 CSV(含自定义列头)的 jq 实战教程
本文详解如何使用jq工具从结构化JSON中提取指定字段(如.Columns[].Id作为CSV表头、.Rows[].Values作为数据行),生成标准CSV输出,兼顾可读性、健壮性与实际工程需求。

本文详解如何使用 jq 工具从结构化 JSON 中提取指定字段(如 .Columns[].Id 作为 CSV 表头、.Rows[].Values 作为数据行),生成标准 CSV 输出,兼顾可读性、健壮性与实际工程需求。
本文详解如何使用 jq 工具从结构化 JSON 中提取指定字段(如 `.Columns[].Id` 作为 CSV 表头、`.Rows[].Values` 作为数据行),生成标准 CSV 输出,兼顾可读性、健壮性与实际工程需求。
在数据处理与 ETL 场景中,常需将 API 返回的嵌套 JSON(如报表服务响应)快速转为 CSV 供 Excel 或下游系统消费。本例 JSON 具有典型二维表结构:Columns 数组定义字段元信息(含 Id 字段作为逻辑列名),Rows 数组以 Values 列表形式存储每行原始值。目标是忽略 QueryHandle、RowCount 等无关字段,仅导出纯净 CSV。
✅ 核心 jq 命令解析
最简洁有效的解决方案如下:
jq -r '[.Columns[].Id], (.Rows[].Values) | @csv' input.json
- -r:启用原始输出模式(raw output),避免 JSON 字符串额外引号包裹;
- [.Columns[].Id]:构造表头数组,提取所有 Columns 对象的 Id 值(["ItemName","Date","Qty"]);
- (.Rows[].Values):展开 Rows 数组,逐项输出其 Values 子数组;
- | @csv:将上游每个输入数组(表头 + 每行数据)自动格式化为 RFC 4180 兼容的 CSV 行(自动转义、加引号、逗号分隔)。
执行后输出:
"ItemName","Date","Qty" "ITEM1","10-MAY-2024","100" "ITEM2","20-MAY-2024","200" "ITEM3","30-MAY-2024","400"
⚠️ 注意事项与进阶技巧
大小写标准化:若需将表头转为 PascalCase 或全小写,可在提取后链式处理:
jq -r '[.Columns[].Id | ascii_upcase], (.Rows[].Values) | @csv' input.json # 输出:"ITEMNAME","DATE","QTY"
空值/缺失字段防护:当 Rows[].Values 长度不一致时,@csv 仍能安全输出(不足位补空字符串),但建议预先校验:
jq -r 'if (.Rows | length) == 0 then [(.Columns[].Id)] else [(.Columns[].Id)], (.Rows[].Values) end | @csv' input.json
Python 备选方案(无 jq 环境):
若需跨平台或集成到 Python 脚本中,可使用标准库 json + csv:import json, csv, sys with open("input.json") as f: data = json.load(f) headers = [col["Id"] for col in data["Columns"]] rows = [r["Values"] for r in data["Rows"]] writer = csv.writer(sys.stdout, quoting=csv.QUOTE_MINIMAL) writer.writerow(headers) writer.writerows(rows)
✅ 总结
该方案以声明式思维直击 JSON 结构本质:用数组聚合表头,用流式展开处理行数据,交由 @csv 完成标准化序列化。相比通用转换工具(如 jq '.[] | @csv'),它精准控制字段来源,规避了嵌套层级误解析风险,是处理“带元数据的表格型 JSON”的最佳实践。推荐在 CI/CD 流水线、运维脚本或数据清洗任务中直接复用。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













