2016-11-28 82 views
1

鉴于JSON filter.json如何通过jq选择键和子对象属性?

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

我要筛选每个键和名称,想要的输出,如:

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

我想:

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

然而,它给我有错误的输出:

"Horst" 
"Bob" 
[ 
    "123", 
    "789" 
] 

但我不知道如何“合并”这两个输出到一个。我哪里错了?

回答

2

This question is similar我从那里采取了最好的答案调整了一点点,以获得以下。

$ 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"