我有一个json文件people.json:
{
"Joe" : {"Job" : "Clown", "Age" : 22},
"Sally" : {"Job" : "Programmer", "Age" : 32},
"Anne" : {"Job" : "Clown", "Age" : 29}
}
我想选择一个小丑的人。我的输出应该如下所示:
{
"Joe" : {"Job" : "Clown", "Age" : 22},
"Anne" : {"Job" : "Clown", "Age" : 29}
}
我在
中尝试了..运算符cat people.json | jq '. | map(select(.Job == "Clown"))'
但它似乎在多个级别匹配乔和安妮并产生更多输出然后我想要。有任何想法吗?感谢。
答案 0 :(得分:17)
使用with_entries
转换为/从中间格式转换为中间格式,该格式将数据表示为具有key
和value
元素的对象数组:
cat people.json | jq 'with_entries(select(.value.Job == "Clown"))'
答案 1 :(得分:2)
以下是使用 reduce
的解决方案 . as $v
| reduce keys[] as $k (
{};
if $v[$k].Job == "Clown" then .[$k] = $v[$k] else . end
)