jq过滤子对象值

use*_*313 14 json jq

我有一个json文件people.json:

{
  "Joe" : {"Job" : "Clown", "Age" : 22},
  "Sally" : {"Job" : "Programmer", "Age" : 32},
  "Anne" : {"Job" : "Clown", "Age" : 29}
}
Run Code Online (Sandbox Code Playgroud)

我想选择一个小丑的人.我的输出应该如下所示:

{
  "Joe" : {"Job" : "Clown", "Age" : 22},
  "Anne" : {"Job" : "Clown", "Age" : 29}
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过..运算符了

cat people.json | jq '. | map(select(.Job == "Clown"))'
Run Code Online (Sandbox Code Playgroud)

但它似乎在多个级别匹配乔和安妮,并产生更多的输出,然后我想要.有任何想法吗?谢谢.

Han*_* Z. 18

用于with_entries转换为/从中间格式转换,该格式将该数据表示为具有keyvalue元素的对象数组:

cat people.json | jq 'with_entries(select(.value.Job == "Clown"))'
Run Code Online (Sandbox Code Playgroud)

根据这里的文档:http://stedolan.github.io/jq/manual/