如何通过 jq select 键和子对象 属性?
How to select key and sub-object property via jq?
给定 json filter.json
:
{
"123": {
"name": "Horst"
},
"789": {
"name": "Bob"
}
}
我想过滤每个键和名称,想要这样的输出:
"123": "Horst"
"789": "Bob"
我试过了:
jq .[].name,keys < filter.json
然而它给我错误的输出:
"Horst"
"Bob"
[
"123",
"789"
]
但我不知道如何将这两个输出 "merge" 合二为一。我哪里错了?
我从那里得到了最好的答案,稍微调整了一下得到以下内容。
$ jq 'to_entries[]| {(.key): .value.name}' < /tmp/filter.json
{
"123": "Horst"
}
{
"789": "Bob"
}
$ jq -r 'keys[] as $key | "\"\($key)\": \"\(.[$key].name)\""
产生:
"123": "Horst"
"789": "Bob"
给定 json filter.json
:
{
"123": {
"name": "Horst"
},
"789": {
"name": "Bob"
}
}
我想过滤每个键和名称,想要这样的输出:
"123": "Horst"
"789": "Bob"
我试过了:
jq .[].name,keys < filter.json
然而它给我错误的输出:
"Horst"
"Bob"
[
"123",
"789"
]
但我不知道如何将这两个输出 "merge" 合二为一。我哪里错了?
$ jq 'to_entries[]| {(.key): .value.name}' < /tmp/filter.json
{
"123": "Horst"
}
{
"789": "Bob"
}
$ jq -r 'keys[] as $key | "\"\($key)\": \"\(.[$key].name)\""
产生:
"123": "Horst"
"789": "Bob"