接着上一篇继续分享
目前很多项目接口返回都是json格式的数据,今天主要分享下对json格式的响应数据的操作。我比较常用的一个库就是jsonpath,这个库是专门对json格式的数据进行取值。
一、jsonpath介绍
jsonpath提供了一个方法提取给定json文档的部分内容,它有很多种编程语言,如java、python、javascript,它提供了类似正则表达式的语法,可以让你获取想要的json内容
二、jsonpath语法
一、常用语法
操作 | 说明 |
---|---|
$ | 表示根元素,表示整个json文档 |
. | 选择子节点 |
.. | 选择子孙节点,不考虑层级 |
[] | 选择子节点的索引 |
[,] | 选择多个字端 |
@ | 当前选中的节点,和条件过来一起使用 |
[?(过滤条件)] | 条件过来数据 |
* | 通配符 |
# 示例json数据
{
'code': 0,
'data': {
'googleId': '',
'gender': '',
'year': '',
'city': '',
'remark': '',
'view': 'grid',
'province': '',
'googleName': '',
'id': 14578467,
'wxName': '',
'email': '',
'vipEndDate': '',
'clientId': 'web-c606bc71-bbd3-44d6-93e2-45f1146e9c17',
'level': 0,
'encryptPassword': '',
'facebookId': '',
'photo': 'photo/DEFAULT-AVATAR-4860fe1e-18d6-4e5f-b424-364f3d4347a2.jpg',
'updateTime': 1633793230453,
'wxId': '',
'passSecure': True,
'sort': 'time',
'appleId': '',
'qqId': '',
'appleName': '',
'agreeTermService': False,
'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhcHAiOiJtdWJ1Iiwic3ViIjoiMTQ1Nzg0NjciLCJsb2dpblR5cGUiOiJtb2JpbGUiLCJleHAiOjE2NDIxNzE5OTIsImlhdCI6MTYzOTU3OTk5Mn0.RPgzFlHlE-8j4jDqxx06oQJpJ8NDUhU6CqzH-0Q7g3tLlRAYiAaM6WsmgrluQV0wJ2-ya-fb2y16PGw8cucBRg',
'phone': '135281111112',
'createTime': 1633793230427,
'name': '幕布用户2327',
'anonymUserFlag': 0,
'qqName': '',
'toutiaoId': '',
'facebookName': '',
'larkId': ''
}
比如我们想取code的值,我们可以通过表达式$.code取值
比如我们取token的值,我们可以通过$..token取到
因为是表示整个json,code是它的子节点,所以就是.code,同样的道理token是它的子孙节点
三、jsonpath库使用
pip install jsonpath
我们通过示例代码取token的值,示例代码,上面是我们接口返回的数据,所以我们代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from request_handler import request_handler
from jsonpath import jsonpath
data = {
"phone": "13528872xxxx",
"password": "Aa12345678",
"callbackType": 0
}
r = request_handler('post', 'https://api2.mubu.com/v3/api/user/phone_login', data=data)
expression = '$..token'
print(jsonpath(r.json(), expression))
返回的值是一个列表,那个取索引为0就得到token的值
更多的用法可以查看jsonpath的相关文档哦!
本文分享自 暴走的软件测试Tester 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!