Найти родительский ключ на основе дочернего значения - PullRequest
1 голос
/ 07 августа 2020

У меня есть следующие JSON. Я хочу знать, из какой страны "Ян" (Бельгия).

{
    "Belgium": [
        {
            "first_name": "Jan",
            "last_name": "Molenaar"
        },
        {
            "first_name": "Piet",
            "last_name": "Hoogenboom"
        }
    ],
    "Germany": [
        {
            "first_name": "Herman",
            "last_name": "Bret"
        },
        {
            "first_name": "Sanne",
            "last_name": "Klepper"
        }
    ]
}

Я нашел и попробовал разные запросы, например:

cat data.json |jq '. as $parent | select(.first_name == "Jan") | $parent'

Но, к сожалению, я не могу найти правильный запрос.

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Следующее предотвращает создание повторов, когда «Jan» является именем нескольких лиц, а также более эффективно, чем альтернативы, которые безусловно просматривают все значения «first_name»:

1 голос
/ 07 августа 2020

Получить путь к записи, в которой first_name равно Jan в виде массива, и извлечь из него название страны.

path(.[][] | select(.first_name == "Jan"))[0]

Онлайн-демонстрация

...