python之jsonpath模块

333 阅读2分钟

安装方法: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大于
=~大于