фильтр по наличию записи в подобъекте - PullRequest
1 голос
/ 04 августа 2020

Для этого:

{
    "item-1": {
        "sub-item-1": {
            "prop_1": 0,
            "prop_2": "bar"
        },
        "sub-item-2": {
            "prop_1": 0,
            "prop_2": "bar",
            "prop_3": "OK"
        }
    },
    "item-2": {
        "sub-item-1": {
            "prop_3": "OK"
        }
    }
}

Мне нужен фильтр jq, который дает мне ту же структуру, но только подобъекты, которые имеют запись «prop_3»:

{
    "item-1": {
        "sub-item-2": {
            "prop_1": 0,
            "prop_2": "bar",
            "prop_3": "OK"
        }
    },
    "item-2": {
        "sub-item-1": {
            "prop_3": "OK"
        }
    }
}

Я могу отфильтровать верхний уровень, используя следующее:

jq 'with_entries(select([.key] | inside("item-1", "item-2")))

Но не могу понять, как расширить это дальше по иерархии.

1 Ответ

3 голосов
/ 04 августа 2020

Просто .. select их?

.[][] |= select(has("prop_3"))
...