下面有一个简短的jq过滤器,可以很好地运行:
cat data.tmp2 | ./jq-linux64-1.5 -r '.issues[].fields.customfield_10025 | if .value != null then (.value + "," + .child.value ) else "" end'
它产生了我需要的东西,如果该字段为空则返回""如果该字段不为空,则使用该字段的值并连接逗号和子值。 但是,当我在下面看到的更大的过滤器中移动我的过滤器时,我收到一个错误:无法使用字符串索引字符串"值"
这是失败的较长过滤器:
cat data.tmp2 | ./jq-linux64-1.5 -r '.issues | map([.key,.fields.project.name,.fields.parent.key,.fields.issuetype.name,.fields.status.name,.fields.priority.name,.fields.resolution.name,.fields.assignee.name,.fields.reporter.name,.fields.created,.fields.updated,.fields.resolutiondate,.fields.summary,(.fields.components | (map(.name?) | join (","))),(.fields.fixVersions | (map(.name?) | join (","))),.fields.customfield_10025 | if .value != null then (.value + "," + .child.value ) else "" end,.fields.customfield_10201] | join ("---"))
答案 0 :(得分:2)
尝试在表达式周围添加括号:
.fields.customfield_10025 | if .value != null then (.value + "," + .child.value ) else "" end
也就是说,[1,2 | type]
被解析为[(1,2) | type]
,而不是[1, (2|type)]
。