json中有复杂的嵌套怎么解析_Requests库(十八)复杂json解析

3dfe68ae3402e177bc3f53ebb9e8563a.png

 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

安装教程

pip install jsonpath

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

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

XpathJSONPath描述
/$跟节点
.@现行节点
/. or []取子节点
..n/a取父节点 JsonPath不支持
//..相对节点 就是不管位置,选择所有符合条件的条件
**匹配所有元素节点
[][]迭代器标示
|[,]支持迭代器中做多选
[]?()支持过滤操作
n/a()支持表达式计算
()n/a分组,JsonPath不支持

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

实际代码演示

6c1ceeca8269fe2eca65feb312d70848.png
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)

        我们看下结果

652ba4e676334e1e1d9fe3affe4e5f6e.png

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

37bbed56e91c43c8fe4935b1ff6ef519.png

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

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

99db9bfe470c18a1e536c1e9dd043712.png

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

193394a766d92fe6d4a51c064940fd6e.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值