python:接口关联:jsonpath获取多层json数据中的某个参数的值

背景:接口关联

接口请求中经常需要一个接口的参数是另一个接口返回的数据,比如 token
而后台返回的数据 token 值有时候会有多层嵌套,比如字典数组字典……等多层嵌套(如{[{token:“6782urfbudheu”}]}),位置不好找或不固定,这时候使用jsonpath 获取会很方便:
使用方式:$..code.

注意:

使用$..的时候保证所求的参数没有重复参数名

使用方式描述:

后台返回的 json 数据是 {},接收数据使用rep = requests.request(),自己要获取的参数名为 "token",那么可以这么使用:
得到的是数组格式:lists

lists = jsonpath.jsonpath(rep.json(),'$..token')

token = lists[0]

完整代码示例:


#--------------jsonpath的使用--------------

import requests
import jsonpath

# url请求地址
url = "http://shop-xo.hctestedu.com/index.php?s=api/user/login"
#公共参数
comman_params = {
    "application": "app",
    "application_client_type": "weixin",
}
#请求参数
data = {
     "accounts": "huace_xm",
     "pwd": "123456",
     "type":"username"
}
#发送请求
rep = requests.post(url=url,
                   params=comman_params,
                   data=data)
print("返回数据:\n",rep.json())
# 获取 token-----------------------用 jsonpath-获取 token,参数名不能一样,返回数据有且仅有一个 token 参数名----------------------------
lists = jsonpath.jsonpath(rep.json(), "$..token")
token = lists[0]
# 获得 token
print("用户token:\n",token)

# 获取 -----------------------用 jsonpath-获取 username----------------------------
username_lists = jsonpath.jsonpath(rep.json(), "$..username")
username = username_lists[0]

print("用户username:\n",username)

# 获取-------------------用 jsonpath-获取 msg-,如果只有一层字典,没有嵌套,也可使用$.msg、$..msg---------------------------
msg_lists = jsonpath.jsonpath(rep.json(), "$..msg")
msg_lists1 = jsonpath.jsonpath(rep.json(), "$.msg")
msg = msg_lists[0]
msg1 = msg_lists1[0]

print("消息内容$..msg:\n",msg)
print("消息内容$.msg:\n",msg)
注意事项:

使用$..的时候保证所求的参数没有重复参数名

在 pyCharm 的项目终端安装requests,jsonpath:

pip install requests
pip install jsonpath

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容