json解析神器--jsonpath

2021-03-02 08:25

阅读:470

标签:查找   取值   标示   子节点   意思   port   strong   tab   过程   

做自动化测试的过程中,如果返回的json层级较多,取值会相对来说比较麻烦,经常使用的取值方式就是:

1.按照固定的层级,一级一级的进行查找

2.使用正则表达式

3.也可以使用jsonpath进行查找----相对来说比较方便的一种方式

 

jsonpath详细解说:

1.首先安装jsonpath依赖包-------pip install jsonpath

2.jsonpath 表达式讲解

xpath jsonpath 描述
/ $ 根节点
. @ 现行节点
/ .或者[] 取子节点
.. n/a 取父节点(jsonpath不支持)
// .. 相对节点,不管位置,选择所有符合条件的条件
* * 匹配所有元素节点
[] [] 迭代器标示(可以在里面做简单的迭代操作,如,数组下标、根据内容选值)
| [,] 支持迭代器中做多选
[] ?() 支持过滤操作
n/a () 支持表达式操作
() n/a 分组,jsonpath不支持

 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用方法:

$ 符,是查找的根节点,传入的参数是Python的dict类型,如果查到对应的结果,则返回为list结果,如果未查找到对应的结果,返回false

实践方法如下:

import jsonpath

result = {
    "code": 0,
    "data": [
        {
            "age": 20,
            "create_time": "2020-12-12",
            "id": 1,
            "mail": "7048667795@qq.com",
            "name": "mini",
            "sex": "W"
        },
        {
            "age": 21,
            "create_time": "2019-12-16",
            "id": 2,
            "mail": "23233232323@qq.com",
            "name": "mini12",
            "sex": "M"
        }
    ],
    "msg": "success!"
}


#$.  -->表示的意思:根节点下的子节点msg,所以输出结果为:success!
msg = jsonpath.jsonpath(result, $.msg)
print(msg)   # 输出结果 [‘success!‘]
#$..  -->表示的意思:根节点下的相对节点(也就是不管位置,选择所有符合条件的条件)-->输出结果是以列表的形式进行存储
names = jsonpath.jsonpath(result, $..name)
print(names)   # 输出结果 [‘mini‘, ‘mini12‘]
#$..  -->表示的意思:根节点下的相对节点(也就是不管位置,选择所有符合条件的条件)-->如果未查找到相关的内容,则会返回False
no = jsonpath.jsonpath(result, $..mini13)
print(no)   # 找不到是结果是 False

 

json解析神器--jsonpath

标签:查找   取值   标示   子节点   意思   port   strong   tab   过程   

原文地址:https://www.cnblogs.com/lucky1212/p/14356289.html


评论


亲,登录后才可以留言!