如何通过jq选择关键字和子对象属性?

5

给定json文件filter.json:

{
    "123": {
        "name": "Horst"
    },
    "789": {
        "name": "Bob"
    }
}

我希望对每个键和名称进行过滤,期望输出如下:
"123": "Horst"
"789": "Bob"

我尝试过:

jq .[].name,keys < filter.json 

然而它给我错误的输出结果:
"Horst"
"Bob"
[
  "123",
  "789"
]

我不知道如何将这两个输出合并成一个。我错在哪了?

2个回答

6

这个问题类似于你所需要的,我从中获取了最佳答案并稍微调整了一下,得到了以下结果。

$ jq 'to_entries[]| {(.key): .value.name}' < /tmp/filter.json
{
  "123": "Horst"
}
{
  "789": "Bob"
}

0
$ jq -r 'keys[] as $key | "\"\($key)\": \"\(.[$key].name)\""

产生:

"123": "Horst"
"789": "Bob"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接