安装方法:pip install jsonpath
官方文档:http://goessner.net/articles/JsonPath
简介
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 |
大于 |
=~ |
大于 |
网友评论