数据是
data_case_c = {
"qualities": {
"id": "0123456789",
"key_criteria": "Target",
"desired_value": {"id": "987654321", "label": "CORRECT"},
}
}
我要检查key_criteria
是Target
。如果是,则返回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"