JMESPath是否有'in'类运算符?如何筛选指定名称的JSON对象?
JMESPath 实现类似 'in' 的筛选逻辑
JMESPath 没有专门命名为 in 的运算符,但可以通过内置的 contains() 函数实现等价的“判断值是否存在于数组”逻辑,进而完成目标筛选。
针对你提供的 JSON 数据,要筛选出 metadata.name 值属于 ['item1', 'item2'] 的对象,使用以下 JMESPath 表达式即可:
[?contains(['item1', 'item2'], object.metadata.name)]
表达式说明
[?...]:JMESPath 的数组筛选语法,用于保留数组中满足后续条件的元素contains(array, value):核心判断函数,当value是array的成员时返回true,否则返回falseobject.metadata.name:精准定位到每个数组元素中需要校验的目标字段
执行结果
将该表达式应用到你的 JSON 数据后,会得到预期的筛选结果:
[ { "object": { "metadata": { "name": "item1" } }, "data": {} }, { "object": { "metadata": { "name": "item2" } }, "data": {} } ]
内容的提问来源于stack exchange,提问作者J. M. Becker
相关产品推荐
相关产品推荐

