2016-12-28 3 views
1

У меня есть массив объектов, подобный следующие:как выбрать объект JSON, где массив значения ребенка содержит определенную Собственость

[ 
    { 
    "id": "one", 
    "tags": { 
     "my.key": "true" 
    } 
    }, 
    { 
    "id": "two", 
    } 
] 

Как я могу выбрать все значения «ID» для каждого объекта, содержащего тег, где «my.key» является «истинным»?

ответ

3

Вы можете использовать select с .tags["my.key"] == "true" и получить только id поле:

jq '.[] | select(.tags["my.key"] == "true") | .id' data.json 
+0

Спасибо за быстрый ответ! Я также получил альтернативное решение на основе [другого ответа] (http://stackoverflow.com/a/26701851/62667): 'map (select (.tags [" my.key "] ==" true ")) | . [] .id' – GaZ

+0

который примерно такой же. У меня была опечатка в синтаксисе «select», который вы мне помогли найти, спасибо :) – GaZ