2017-02-11 9 views
0

У меня есть JSON-файл, как это:Как отфильтровать массив объектов на основе значений строки во внутреннем массиве с JQ

[{ "path": "p1" "title": "t1" "tags": ["tags1"] }, { "path": "p2" "title": "t2" "tags": ["tags1", "tag2"] }, { "path": "p3" "title": "t3" "tags": ["tags2"] } ] , и я хотел бы, чтобы отфильтровать (используя jq) значение на основе тегов и получить название как выход.

Например, я бы фильтровать все значения, которые имеют tags1 (и результат будет t1 и t2).

Как я могу это сделать?

Благодарим за ответы.

P.S. : Я нашел этот вопрос: How to filter an array of objects based on values in an inner array with jq?, который почти получил ответ, но я не смог его адаптировать.

ответ

0

После устранения вход JSON, следующий фильтр производит вывод, показанный ниже:

.[] | select(.tags | index("tags1")) | .title 

Выход:

"t1" 
"t2"