数据是

data_case_c = {
    "qualities": {
        "id": "0123456789",
        "key_criteria": "Target",
        "desired_value": {"id": "987654321", "label": "CORRECT"},
    }
}

我要检查key_criteriaTarget。如果是,则返回qualities.desired_value.label,在这种情况下为CORRECT

这是我认为可以工作的查询

query = "qualities.key_criteria == 'Target' | qualities.desired_value.label"

它返回None

表达式的前半部分返回True

query = "qualities.key_criteria == 'Target'"

当与desired_value相同的级别匹配特定条件时,如何返回qualities.desired_value.label的实际值?

分析解答

为了过滤,在Jmespath中,您确实需要一个JSON数组,您可以在to_array功能上实现该数组

to_array(qualities)

然后,您必须将过滤器投影投入:

to_array(qualities)[?key_criteria == `Target`]

选择要查询的属性:

to_array(qualities)[?key_criteria == `Target`].desired_value.label

最后,摆脱您创建的数组以便能够用管道表达进行过滤:

to_array(qualities)[?key_criteria == `Target`].desired_value.label | [0]

所有这一切,在您的示例JSON上,您最终得到了:

"CORRECT"