2016-12-17 112 views
1

鑑於這種輸入的值排除嵌套對象:尋找一個JQ過濾器基於一個嵌套屬性

{ 
    "10000703": { 
    "show_id": 1641788, 
    }, 
    "10000838": { 
    "show_id": 1517903, 
    }, 
    "10001325": { 
    "show_id": 1641788, 
    }, 
} 

我正在尋找一個過濾器,說:「返回的所有對象,其中show_id不等於1641788

預期輸出是:

{ 
    "10000838": { 
    "show_id": 1517903, 
    }, 
} 

一直無法排除嵌套對象:(

+1

問:你嘗試過什麼? – paulsm4

+0

我嘗試了一大堆涉及'walk/1'和'del()'的事情,但'with_entries/1'是我所需要的。 –

回答

1

這是with_entries/1便利的一個很好的例子,這就是可能的JQ的簡潔:

with_entries(select(.value.show_id != 1641788)) 

with_entries/1對象轉換爲一個顯式的.key/.value的表示。詳情請參閱jq manual

或者與更大的簡潔,可以在這種情況下,也可以使用del/1

del(.[] | select(.show_id == 1641788))