如何用Linux下的jq工具将多层级JSON扁平化为指定格式CSV?
使用jq将多层JSON转换为指定CSV格式
实现命令
假设你的JSON数据保存在input.json文件中,执行以下命令即可生成目标CSV:
jq -r ' (["taskId", "jobs.runId", "jobs.startTime", "jobs.endTime", "jobs.status", "jobs.fileDetails.path", "jobs.fileDetails.transferDirection"] | @csv), (.jobActivityLog[] | .taskId as $taskId | .jobs[] | .fileDetails[] | [$taskId, .runId, .startTime, .endTime, .status, .path, .transferDirection] | @csv) ' input.json
命令解析
-r:输出原始字符串,避免CSV内容被JSON引号包裹- 第一行:将指定表头组成数组,通过
@csv格式化为标准CSV表头行 - 第二部分逻辑:
.jobActivityLog[]:展开顶层的任务日志数组.taskId as $taskId:暂存当前任务的taskId,供嵌套层级引用.jobs[]:展开当前任务下的作业数组.fileDetails[]:展开当前作业下的文件详情数组- 按表头顺序提取字段并组成数组,再通过
@csv格式化为CSV数据行
输出示例
执行命令后会得到如下格式的输出:
"taskId","jobs.runId","jobs.startTime","jobs.endTime","jobs.status","jobs.fileDetails.path","jobs.fileDetails.transferDirection" "gNngdUm4p0WfBDKHJqQ2S8",63750,"2025-05-04T19:03:48Z","2025-05-04T19:03:50Z","SUCCESS","/in/finance/ALL_GL_AHCS/2025/05/04/XlaTransaction_ALL_20250504T1902314697.zip","UPLOAD"
内容的提问来源于stack exchange,提问作者Krishnan Ravi
相关产品推荐
相关产品推荐

