2016-11-28 74 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"