根据子值查找父键

时间:2020-08-07 12:13:31

标签: json jq

我有以下JSON。我想知道“ Jan”来自哪个国家(比利时)。

{
    "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 个答案:

答案 0 :(得分:1)

以数组的形式获取指向first_nameJan的条目的路径,并从中提取国家/地区名称。

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

Online demo

答案 1 :(得分:1)

以下内容可防止在“ Jan”是几个人的名字时产生重复,并且比无条件地扫描所有“ first_name”值的替代方法更有效:

uintmax_t