安装方法:pip install jsonpath 官方文档:goessner.net/articles/Js…
简介
jsonpath表达式与xPath表达式类似,用来解析多层嵌套的json数据。
JsonPath是Json版的XPath。
JsonPath 对于 JSON 来说,相当于 XPath 对于XML
语法
JsonPath用符号$表示最外层对象,类似于Xpath中的根元素
jsonPath可以用:
- 点表示法:
.store.book [0].title - 括号表示法:
$['store']['book'][0]['title']
| 语法 | 描述 |
|---|---|
$ | 根节点 |
@ | 当前节点 |
. | 子节点,相当于xpath中的/ |
.. | 子孙节点,相当于xpath中的// |
* | 通配符,匹配所有成员。 |
例如,address.*表示address对象的所有属性, | |
book[*]表示book数组的所有项目。 | |
[n] | 从数组中选择第n那一个元素。索引从0开始。 |
[n1,n2,…] | 选择具有指定索引的数组元素,相当于上一个的多选。返回一个列表 |
[start:end] | |
[start:] | 数组切片操作: |
| 从start索引直到(但不包括)end索引选择数组元素。 | |
| 省略end,则选择从start到数组结尾的所有元素。返回一个列表 | |
[:n] | 选择数组的前n个元素 |
[-n:] | 选择数组的最后n个元素 |
[?(expression)] | 过滤表达式,进行数据筛选 |
[(expression)] | 使用表达式。 |
[(@.length-1)]选择数组中的最后一项。 | |
在这里length是指当前数组的长度,而不是名为的JSON字段length。 |
注意:
- JsonPath的索引从0开始计数,而XPath索引从1开始
- JsonPath中字符串使用单引号表示
- JSONPath表达式(包括属性名称和值)区分大小写
函数
| 函数 | 描述 |
|---|---|
| length() | 提供数组的长度 |
| min() | 提供数字数组的最小值 |
| max() | 提供数字数组的最大值 |
过滤器
| 操作 | 描述 |
|---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
=~ | 匹配[JavaScript正则表达式]例如,匹配描述以cat开头(不区分大小写)的项目。[?(@.description =~ /cat.*/i)] |
! | 用于取消过滤条件:[?(!@.isbn)]匹配不具有该isbn属性的项目。 |
&& | 逻辑AND,用于合并多个过滤器表达式:[?(@.category=='fiction' && @.price < 10)] |
|| | 逻辑OR,用于组合多个过滤器表达式:[?(@.category=='fiction' || @.price < 10)] |
in | 大于 |
=~ | 大于 |