我怎样才能重塑jq输出?

时间:2017-02-08 18:04:55

标签: json jq

我有以下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] 作为记录?

2 个答案:

答案 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]