使用jq提取Git Issues生成CSV时遇对象格式错误求助
解决Git Issues导出CSV时的jq对象错误
这个错误的核心原因是:你直接把labels字段的对象数组塞进了CSV行,但jq的@csv过滤器只支持字符串、数字这类基础数据类型,不接受嵌套对象。
解决方法
把labels数组中的标签名提取出来,拼接成单个字符串,让它能被@csv正常处理。
完整命令示例
假设你要导出的列是Issue Number、Title、Labels、Created Date、State,可以用这条命令:
gh issue list --json number,title,labels,createdAt,state \ | jq -r ' # 定义CSV表头 ["Issue Number", "Title", "Labels", "Created Date", "State"], # 处理每条issue数据 (.[] | [ .number, .title, # 提取所有标签名,用分号拼接成单个字符串(支持多值单元格) ([.labels[].name] | join("; ")), .createdAt, .state ]) # 转换为CSV格式 | @csv' > issues.csv
关键细节
[.labels[].name]:从labels的对象数组里批量提取所有标签的name字段,得到一个纯字符串数组join("; "):用分号(你可以换成逗号或其他分隔符)把标签数组拼接成单个字符串,这样CSV单元格就能容纳多个标签,同时符合@csv的格式要求- 如果需要保留标签的额外信息(比如颜色),可以修改拼接逻辑:
([.labels[] | "\(.name) (\(.color))"] | join("; ")) - 其他嵌套字段如果要放进CSV,也必须用同样的方式转成字符串,不能直接传入对象。
内容的提问来源于stack exchange,提问作者sagargahalod
相关产品推荐
相关产品推荐

