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类似,如下。

Xpath

JSONPath

描述

/

$

跟节点

.

@

现行节点

/

. or []

取子节点

..

n/a

取父节点 JsonPath不支持

//

..

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

*

*

匹配所有元素节点

[]

[]

迭代器标示

|

[,]

支持迭代器中做多选

[]

?()

支持过滤操作

n/a

()

支持表达式计算

()

n/a

分组,JsonPath不支持

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

实际代码演示

python json 获取嵌套属性 python嵌套json解析_python json 获取嵌套属性

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)

        我们看下结果

python json 获取嵌套属性 python嵌套json解析_迭代器_02

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

python json 获取嵌套属性 python嵌套json解析_json_03

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

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