如何用JSONPath判断数组中存在指定值并返回路径?
JSONPath 查询:判断数组中是否存在指定值并返回路径
需求场景
给定如下JSON结构,需编写JSONPath语句,判断
names数组中是否包含"Steve",若存在则返回对应元素的路径:
{ "names": [ "David", "Steve", "Wilson" ] // 其他属性省略 }
可用的JSONPath查询语句
- 动态过滤查询(通用场景,适合不知道元素索引的情况):
$..names[?(@ == 'Steve')] - 精确索引查询(已知元素位置时可用):
$.names[1]
语法说明(基于原文档翻译)
核心语法拆解
$:代表JSON根节点(整个对象)..:递归遍历所有层级,匹配任意位置的names属性(如果names固定在根节点下,也可简化为$.names)[]:用于包裹数组下标或过滤条件?():过滤表达式容器,内部定义筛选规则@:指代当前正在被检查的数组元素
查询逻辑说明
执行$..names[?(@ == 'Steve')]时,JSONPath会遍历所有names数组,逐一检查元素是否等于"Steve"。匹配成功后,会返回该元素的完整路径(不同工具实现可能返回路径字符串或元素值,但表达式逻辑通用)
内容的提问来源于stack exchange,提问作者Hashir Hussain
相关产品推荐
相关产品推荐

