2015-09-27 53 views
1

我有一個JSON文件爲什麼JQ陣列收益長度大於的數組項實際沒有

{ 
    "file" : { 
     "a" : 1, 
     "b" : 2 
    } 
} 

我使用jq計數許可證號文件值在此JSON對象。

然後使用上的bash

arr=($(cat jsonfile.json | jq '.file' | jq -r 'keys')) 
echo ${#arr[@]} 

在這裏,我得到的輸出4,而只有2鍵A,B

爲什麼會這樣,以及如何獲取常用3只有兩個元素ab。?

+0

謝謝! – janos

回答

1

要了解爲什麼你4個元素的數組,看看子shell的輸出:

cat jsonfile.json | jq '.file' | jq -r 'keys' 

這將產生:

[ 
    "a", 
    "b" 
] 

每行有變數組的一個元素 - > 4行。

試試這個:

jq -r '.file | keys | .[]' jsonfile.json 

輸出:

a 
b 

我還簡化了您的原始表達式。 (謝謝@JeffMercado!)

+1

'jq -r'.file |鍵| 。[]'jsonfile.json' –

+0

謝謝@JeffMercado,這很棒,更新了我的帖子(+給了你信用) – janos

相關問題