JSONPath常用表达式
JSONPath是一种用于查询JSON数据的语言,其语法受到XML中XPath的启发。它允许通过路径表达式选择JSON文档中的节点,包括对象、数组或基本数据类型。与手动解析JSON相比,JSONPath提供了一种声明式的方法,只需描述想要的数据路径,而无需编写复杂的遍历代码
常用表达式
- 根节点:使用
$
表示根节点,代表整个JSON数据。 子节点访问:可以使用点号.或方括号[‘’]来访问子节点。
例如,$.store.book.title
获取第一本书的标题。 - 数组索引:用于访问数组中的特定元素。例如,
$.store.book:ml-citation{ref="1" data="citationList"}
获取第二本书的所有信息。 - 通配符:
*
用于匹配所有元素或属性。例如,$.store.*
选择store下的所有子节点。
递归搜索:..
用于递归地查找所有符合条件的元素。例如,$..book
在整个JSON数据中查找所有的book元素。 - 过滤器:
?()
用于根据特定条件过滤元素。例如,$.store.book[?(@.price <15)]
选择价格低于15的书籍。 - 逻辑组合:可以使用
&&
和||
进行逻辑组合。例如,$.store.book[?(@.price < 15 &&@.category == 'fiction')]
选择价格低于15且类别为小说的书籍。 - 算术运算:支持
+、-、*、/、%
等算术运算。例如,$.store.book.price * 2
将第一本书的价格乘以2。 - 长度函数:length()用于获取数组或字符串的长度。例如,
$.store.book.length()
返回book数组的长度。 - 最小值和最大值:min()和max()用于获取数组中数字元素的最小值和最大值。例如,
$.store.book[*].price.min()
返回所有书籍价格的最小值
示例
假设有以下JSON数据:
{"store": {"book": [{ "category": "fiction", "title": "The Great Gatsby", "price": 30 },{ "category": "science", "title": "The Theory of Everything", "price": 40 }]}
}
获取所有书籍的价格:$.store.book[*].price
获取价格低于30的书籍:$.store.book[?(@.price < 30)]