我有以下json数据:
[
{"name":"JSON", "good":true},
{"name":"XML", "good":false},
{"name":"JSON", "good":false},
{"name":"HTML", "good":false},
{"name":"XML", "good":true},
{"name":"XML", "good":false}
]
使用:
jq '.[] | select(.name =="XML") | .good', result will be :
false
true
false
如何将 [false,true,false] 作为记录?
答案 0 :(得分:2)
尝试将整个表达式包装在数组构造函数[]
jq '[.[] | select(.name =="XML") | .good]'
[
false,
true,
false
]
或使用--compact-output
标志
jq --compact-output '[.[] | select(.name =="XML") | .good ]'
[false,true,false]
答案 1 :(得分:1)
简而言之:将结果收集为数组,并使用-c选项,例如
$ jq -c 'map( select(.name =="XML") | .good )'
输出:
[false,true,false]