使用jq转换复杂结构JSON至CSV遇报错,求解决方案
使用jq将嵌套JSON转换为指定CSV格式
正确的jq命令
jq -r ' # 输出CSV表头 "run_number","cinfo.name","cinfo.state","cinfo.city", # 遍历每个run条目 .document.results.summary.run[] | .run_number as $run_id # 展开cinfo数组,为每个对象生成一行 | .cinfo[] # 按需求组合字段数组 | [$run_id, .name, .state, .city] # 转换为CSV格式 | @csv ' input.json
错误原因说明
你之前的命令把run_number和整个cinfo数组放在同一个数组中传递给@csv,但@csv不支持数组作为行元素,只能处理字符串、数字这类基本类型,因此触发报错。
命令逻辑拆解
- 先输出CSV表头,确保列名匹配需求;
- 遍历每个
run条目,把当前的run_number存为变量$run_id,方便后续复用; - 展开
cinfo数组,对数组里的每个对象单独处理; - 把
$run_id和当前cinfo对象的name、state、city字段组合成一维数组; - 用
@csv把一维数组转换为标准CSV行。
执行后会直接输出你需要的格式:
"run_number","cinfo.name","cinfo.state","cinfo.city" "42","Joe shmo","AZ","Phoenix" "42","Jane shmo","CA","Blythe" "84","Jake shmo","NY","Albany" "84","Jay shmo","TN","Franklin"
内容的提问来源于stack exchange,提问作者KMacTN
相关产品推荐
相关产品推荐

