python 中jsonpath模块

from jsonpath import jsonpath

一、概念,jsonpath是什么
jsonpath是一种简单的方法,来提取给定json文档中的部分内容;

jsonpath方法需要两个参数,一个是数据,一个是jsonpath表达式;
官方给出的函数定义:
def jsonpath(obj, expr, result_type='VALUE', debug=0, use_eval=True)

注意:

如果没有匹配到数据,返回False;

如果匹配到数据,返回的是包含数据的列表

返回的是list列表,如果要用返回的数据,记得用下标取数

二、jsonpath的语法

jsonpath

解释                                  

Description                    
$ 根元素 the root object/element
.  或 [] 子元素 child operator
.. 递归下降。JSONPath从E4X借用了这个语法。 recursive descent. JSONPath borrows this syntax from E4X.
@ 当前元素 the current object/element
?() 应用过滤表达式;一般需要结合[?(@  )]来使用 applies a filter (script) expression.
[] (数组)下标操作符。XPath使用它遍历元素集合和谓词。在Javascript和JSON中,它是原生数组操作符。 subscript operator. XPath uses it to iterate over element collections and for predicates. In Javascript and JSON it is the native array operator.
[,]

选择多个字段;

也可以切片[m:n],但是不能这样使用[-1]

Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set.
() 脚本表达式,使用在脚本引擎下面 script expression, using the underlying script engine.

 @一般和条件过滤一起使用,如 [?(@.条件)];

三、实例

data3={'code':200,'data':[{'id':1,'name':'lili'},
                          {'id':4,'name':'lucy'},
                          {'id':2,'name':'keepr'},]}
# 取data下的第一个名字
print(jsonpath(data3,"$.data[0].name"))
# 等同于上面,因. []都代表子元素;同时[]代表数组索引
print(jsonpath(data3,"$.[data][0][name]"))

# 取id等于4的name,此时用到条件筛选
print(jsonpath(data3,"$.data[?(@.id==4)].name"))

运行后结果

['lili']
['lili']
['lucy']

四、其他

关于条件筛选,为方便记忆与理解,做了下拆分;如果有误,欢迎各位大佬指正,感谢

 

 

 

 

 






posted @ 2022-06-19 18:11  袁小文子  阅读(1489)  评论(0编辑  收藏  举报