如何使用Linux Jq工具将嵌套JSON转换为CSV格式用于数据分析
jq转换嵌套JSON流为CSV实现指南
最终可直接运行命令
jq -r '["name","weight","State"], (. as $parent | .details[] | [$parent.name, .weight, .State]) | join(",")' new.json > output.csv
分步实现讲解
1. 基础参数说明
命令开头的-r是jq的原始输出参数,作用是去掉输出内容默认带的双引号,符合CSV纯文本格式要求。
2. 表头生成逻辑
表达式第一部分["name","weight","State"]是手动构造CSV表头数组,后续会被拼接为第一行表头。
3. 嵌套字段关联逻辑
. as $parent:将当前正在处理的顶层JSON对象存入临时变量$parent,后续展开嵌套数组时也能获取到顶层的name字段.details[]:展开details数组,把数组内的每一个对象单独拆分为一条待处理数据[$parent.name, .weight, .State]:对每一条拆分后的details对象,组装为包含顶层姓名、当前体重、当前州名的数组,完成跨层级字段关联
4. CSV格式拼接
最后的join(",")会把每一行的字段数组用逗号拼接为字符串,最终输出符合要求的CSV格式内容。
边界场景优化
如果你的字段值中本身包含逗号、双引号等CSV特殊字符,可以将join(",")替换为jq内置的@csv格式化函数,自动完成特殊字符转义:
jq -r '["name","weight","State"], (. as $parent | .details[] | [$parent.name, .weight, .State]) | @csv' new.json > output.csv
内容的提问来源于stack exchange,提问作者Arnab Ray
相关产品推荐
相关产品推荐

