使用jq的JSONPath语法实现JSON转CSV并筛选type为secondary的数据
jq命令错误排查与修复
错误原因
原命令存在3个核心问题:
- 语法混用:
[?type=="secondary"]是JMESPath的筛选语法,并不符合jq的语法规范,jq的条件筛选需使用select()函数 - 路径顺序错误:待处理JSON的最外层是
colors数组,你需要先遍历.colors下的元素,再针对每个元素的type字段做筛选,原命令的筛选顺序完全颠倒 - 未兼容字段缺失:测试数据中
white对应的条目没有type字段,直接判断会触发字段不存在的报错,可加?做可选兼容
修正后命令
如果确定只保留明确存在type字段且值为secondary的条目,使用以下命令:
jq -r '["color","category","type"], (.colors[] | select(.type == "secondary") | [.color, .category, .type]) | @csv' test.json > test.csv
如果需要兼容无type字段的条目避免报错,修改select部分为select(.type? == "secondary")即可。
输出结果
执行后得到的test.csv内容如下:
"color","category","type" "green","hue","secondary"
内容的提问来源于stack exchange,提问作者gamer_rulez
相关产品推荐
相关产品推荐

