jq不能用字符串索引字符串"值"

时间:2015-11-24 20:17:38

标签: jq

下面有一个简短的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 ("---"))

1 个答案:

答案 0 :(得分:2)

尝试在表达式周围添加括号:

.fields.customfield_10025 | if .value != null then (.value + "," + .child.value ) else "" end

也就是说,[1,2 | type]被解析为[(1,2) | type],而不是[1, (2|type)]