2016-12-17 1 views
1

Учитывая этот вход:Ищете JQ фильтр, чтобы исключить вложенные объекты на основе стоимости вложенного имущества

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

Я ищу фильтр, чтобы сказать «вернуть все объекты, где show_id не равна 1641788 "

ожидаемый результат будет:

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

не удалось исключить вложенные объекты :(

+1

Q: Что вы пробовали? – 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))