python编辑工具——jsonpath在线解析工具

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

01 Jsonpath的定义

JsonPath是一种简单的方法来提取给定JSON文档的部分内容。Jsonpath是跨语言的,很多语言都可以使用jsonpath,如Javascript,Python和PHP,Java。

JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容。

02 案例

我们拿一个免费的地图接口为例,以下是接口的对应的内容:

Url地址:https://ditu.amap.com/service/regeo?longitude=121.04925573429551&latitude=31.315590522490712

请求方法:get请求

响应数据:json数据

03 工具准备

pycharm,json在线解析工具,jsonpath在线解析工具

Pycharm是python的编辑工具,这个大家自行下载

Json在线解析工具,网址如下:https://www.sojson.com/

jsonpath在线解析工具,网址如下:http://www.e123456.com/aaaphp/online/jsonpath/

因为响应结果的json数据如果很多,不是特别好看如何提取对应的数据,这时候可以利用json的在线解析工具,但是json数据的特点就是键被双引号包裹的。Reqeusts库获取的响应值是resp,他的resp.json()获取的是字典的类型,resp.text获取的是json字符串,所以把resp.text获取的数据粘贴到工具中进行转换,代码如下:
在这里插入图片描述

Json在线转换如图所示:
在这里插入图片描述

Jsonpath在线解析工作如下:
在这里插入图片描述

04 jsonpath语法

接下来我们来讲解一下常用的jsonpath的语法,其他的可以参考上面图片的JSONPATH expressions:

$ 代表整个json数据的值

. 代表的是层级关系,类似windows电脑的/

… 代表相对的层级关系,类似windows电脑的//

[索引] 如果是列表中获取其中的元素,就通过列表中的额索引值进行获取,索引值是从0开始的。

[0,1] 或者[start:end] 可以对列表进行切片获取对应的元素

[?(@.price)] 获取带有对应属性的键

[?(@.price<10)] 获取带有对应属性且对应属性的值具有某些特点的键

需求1:获取cross_list里面所有的name的值

$…name
在这里插入图片描述

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦

需求2:获取cross_list中第二个元素的name值

$.data.cross_list[1].name

在这里插入图片描述

如果表达式书写不对,会显示匹配不成功,如下图所示
在这里插入图片描述

需求3:获取cross_list中前两个元素的name值

$.data.cross_list[:2].name
在这里插入图片描述

需求4:找出poi_list这个键所对应的值里面包含具有direction属性的值

$.data.poi_list[?(@.direction)]
在这里插入图片描述

需求5:找出cross_list的值里面的weight等于”130”的值

$.data.cross_list[?(@.weight==“130”)]
在这里插入图片描述

Python如何使用jsonpath:

首先下载python的第三方库

pip install jsonpath

Jsonpath的语法如下:

jsonpath.jsonpath()

参数:json对象,jsonpath表达式

返回值:列表

用python去解析jsonpath的代码如下
在这里插入图片描述

备注:jsonpath获取匹配到的结果都放在列表中保存,所以想得到里面的数据一定是要用索引值进行获取的。

因为json的跨语言和方便性,很多开发人员写的接口都比较喜欢返回json数据,所以我们在做接口自动化测试的时候经常会遇到对json数据进行解析的时候,比如对响应数据做断言,或者有接口依赖的场景的时候,需要做数据提取,这两种情况都会遇到jsonpath的解析。所以大家都做练习,好好掌握。

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值