前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Requests库(十八)复杂json解析

Requests库(十八)复杂json解析

作者头像
雷子
发布2021-03-15 16:09:35
8310
发布2021-03-15 16:09:35
举报
文章被收录于专栏:雷子说测试开发

Requests库分享系列:

Requests库(一)

Requests库(二)

Requests库(三)如何获取接口传参参数

Requests库(四)如何传递不一样的参数

Requests库(五)接口返回状态码

Requests库(六)接口返回响应头和请求Cookies

Requests库(七)重定向和超时

Requests(八)代理和会话对象

Requests库(九)准备的请求和SSL 证书验证

Requests库(十)接口请求认证

Requests库(十一)实战请求钉钉群机器人

Requests库(十二)实战获取今日头条24小时热文

Requests库(十三)利用钉钉机器人打造一个钉钉群定时推送今日头条24小时热闻

Requests库(十四)一文揭秘如何获取快手关注的视频

Requests库(十五)一文解决解析text/html格式返回数据

Requests库(十六)一文展示如何利用Requests请求xml格式接口

Requests库(十七)一文展示如何利用Requests发送form表单请求

Requests库(十八)Requests发送application/x-www-form-urlencoded请求


前言

Requests请求返回的数据,有时候是一些简单的json,直接解决即可,但是呢,更多的时候,我们需要处理复杂的json,那么我们应该如何处理呢。这里给推荐一个优秀的json解析的利器--jsonpath

安装教程

代码语言:javascript
复制
pip install jsonpath

那么我们去官网去查看下,https://goessner.net/articles/JsonPath/

jsonpath的语法和xpath类似,如下。

Xpath

JSONPath

描述

/

$

跟节点

.

@

现行节点

/

. or []

取子节点

..

n/a

取父节点 JsonPath不支持

//

..

相对节点 就是不管位置,选择所有符合条件的条件

*

*

匹配所有元素节点

[]

[]

迭代器标示

&#124

[,]

支持迭代器中做多选

[]

?()

支持过滤操作

n/a

()

支持表达式计算

()

n/a

分组,JsonPath不支持

那么我们如何使用呢,接下来给大家演示下。

实际代码演示

代码语言:javascript
复制
import  jsonpathd = {    "error_code": 0,    "data": [        {            "id": 2012110112,            "name": "雷子",            "sex": "男",            "age": 27,            "addr": "北京市昌平区",            "cars": [                {"car1": "京A88881"},                {"car2": "京A88882"},            ]        },        {            "id": 2012110113,            "name": "雷子说测试开发",            "sex": "男",            "age": 27,            "addr": "北京市昌平区",            "cars": [                {"car1": "京A88885"},                {"car2": "京A88889"},            ]        }    ]
}result=jsonpath.jsonpath(d,'$..car2') #模糊匹配print(result)result2=jsonpath.jsonpath(d,'$.data') #取到data这里的所有内容print(result2)result3 = jsonpath.jsonpath(d, '$.data[0]') #取到data里的第1个元素print(result3)result = jsonpath.jsonpath(d, '$.data[0].id')  # 取到data里的第1个元素中的idprint(result)result = jsonpath.jsonpath(d, '$.data[0].beijing')  # 取到data里的第1个元素中的beijingprint(result)

我们看下结果

我们可以看到,可以准确的返回我们想要取得值。如果我们查找的元素不存在,那么默认会给我们返回False。这样我们在实际的测试中就更加好判断了。

在之前的文章有分享过一个类似的,是我自己写的复杂的json处理脚本,python解析复杂的json。在实际的中我们可以根据自己的工程选择使用符合我们自己的项目的。

利用jsonpath可以解决我们实际的项目去结合使用,选一个最适合自己的项目的即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SymantecSSL 证书
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档