使用jq解析嵌套JSON并提取字段生成指定格式CSV的问题求助
jq解析JSON流转CSV解决方案
可用命令
jq -r '["顶层id", "顶层description", "project.id", "project.description", "project.url"], (inputs | . as $top | if .project | length == 0 then .project = [{}] else . end | .project[] | [$top.id, $top.description, .id, .description, .url]) | @csv' 输入文件名.json > 输出文件名.csv
命令说明
-r参数:输出原始文本格式,避免CSV内容被额外转义包裹- 开头的数组定义为CSV表头,可根据需求自行修改字段名称
- 自动判断project数组是否为空,为空时自动填充空对象占位,保证顶层条目至少输出一行
- 自动展开project数组,每个子项单独对应一行输出
- 内置
@csv方法自动处理特殊字符转义,符合标准CSV格式规范
低版本兼容命令
如果运行上述命令报错(多为jq版本较低不支持inputs语法),可使用slurp模式命令:
jq -s -r '["顶层id", "顶层description", "project.id", "project.description", "project.url"], (.[] | . as $top | if .project | length == 0 then .project = [{}] else . end | .project[] | [$top.id, $top.description, .id, .description, .url]) | @csv' 输入文件名.json > 输出文件名.csv
输出示例
运行后生成的CSV内容符合预期:
"顶层id","顶层description","project.id","project.description","project.url" 15,"package",1762,"This Red Hat Server 7 is built from the Redhat Official","some url" 15,"package",1663,"This Ubuntu 20.04 is built from the Ubuntu Official","some url" 15,"package",1557,"This Centos 7 is built from the Centos Official","some url" 22,"exe",,, 34,"brew",,,
内容的提问来源于stack exchange,提问作者gamer_rulez
相关产品推荐
相关产品推荐

