前言

有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理。

一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解析返回的数据了。

一、json模块简介

1.Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于http请求中

2.可以用help(json),查看对应的源码注释内容

Encoding basic Python object hierarchies::
    
        >>> import json
        >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
        '["foo", {"bar": ["baz", null, 1.0, 2]}]'
        >>> print json.dumps("\"foo\bar")
        "\"foo\bar"
        >>> print json.dumps(u'\u1234')
        "\u1234"
        >>> print json.dumps('\\')
        "\\"
        >>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
        {"a": 0, "b": 0, "c": 0}
        >>> from StringIO import StringIO
        >>> io = StringIO()
        >>> json.dump(['streaming API'], io)
        >>> io.getvalue()
        '["streaming API"]'

二、Encode(python->json)

1.首先说下为什么要encode,python里面bool值是True和False,json里面bool值是true和false,并且区分大小写,这就尴尬了,明明都是bool值。

在python里面写的代码,传到json里,肯定识别不了,所以需要把python的代码经过encode后成为json可识别的数据类型。

2.举个简单例子,下图中dict类型经过json.dumps()后变成str,True变成了true,False变成了fasle

3.以下对应关系表是从json模块的源码里面爬出来的.python的数据类,经过encode成json的数据类型,对应的表如下
     |  | Python              | JSON          |
     |  +===================+===============+
     |  | dict                  | object        |
     |  +-------------- -----+---------------+
     |  | list, tuple          | array         |
     |  +-------------------+---------------+
     |  | str, unicode      | string        |
     |  +-------------------+---------------+
     |  | int, long, float  | number        |
     |  +-------------------+---------------+
     |  | True                | true          |
     |  +-------------------+---------------+
     |  | False             | false         |
     |  +-------------------+---------------+
     |  | None              | null          |
     |  +-------------------+---------------+

三、decode(json->python)

1.以第三篇的登录成功结果:{"success":true}为例,我们其实最想知道的是success这个字段返回的是True还是False

2.如果以content字节输出,返回的是一个字符串:{"success":true},这样获取后面那个结果就不方便了

3.如果经过json解码后,返回的就是一个字典:{u'success': True},这样获取后面那个结果,就用字典的方式去取值:result2["success"]

4.同样json数据转化成python可识别的数据,对应的表关系如下

|  +---------------+-------------------+
     |  | JSON               | Python            |
     |  +===============+===================+
     |  | object             | dict              |
     |  +---------------+-------------------+
     |  | array               | list              |
     |  +---------------+-------------------+
     |  | string              | unicode           |
     |  +---------------+-------------------+
     |  | number (int)    | int, long         |
     |  +---------------+-------------------+
     |  | number (real)   | float             |
     |  +---------------+-------------------+
     |  | true                | True              |
     |  +---------------+-------------------+
     |  | false               | False             |
     |  +---------------+-------------------+
     |  | null                 | None              |
     |  +---------------+-------------------+

四、案例分析

1.比如打开快递网:http://www.kuaidi.com/,搜索某个单号,判断它的状态是不是已签收

2. 实现代码如下

五、参考代码:

# coding:utf-8
import requests

url = "http://www.kuaidi.com/index-ajaxselectcourierinfo-1202247993797-yunda.html"
headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
           }  # get方法其它加个ser-Agent就可以了

s = requests.session()
r = s.get(url, headers=headers,verify=False)
result = r.json()
data = result["data"]   # 获取data里面内容
print data
print data[0]         # 获取data里最上面有个
get_result = data[0]['context']  # 获取已签收状态
print get_result

if u"已签收" in get_result:
    print "快递单已签收成功"
else:
    print "未签收"

对python接口自动化有兴趣的,可以加python接口自动化QQ群:226296743

也可以关注下我的个人公众号:

---------------------------------python接口自动化已出书-------------------------

全书购买地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695

python接口自动化5-Json数据处理相关推荐

  1. Python接口自动化之动态数据处理

    VOL 135 15 2020-06 今天距2021年199天 这是ITester软件测试小栈第135次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  2. python接口自动化pdf悠悠_python接口自动化13-data和json参数傻傻分不清【悠悠】

    https://www.cnblogs.com/yoyoketang/p/7231384.html 前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参 ...

  3. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  4. python接口自动化关联参数_python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...

  5. Python接口自动化之接口依赖

    VOL 129 28 2020-05 今天距2021年216天 这是ITester软件测试小栈第129次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  6. Python接口自动化之logging封装及实战

    VOL 124 15 2020-05 今天距2021年230天 这是ITester软件测试小栈第124次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  7. Python接口自动化之yaml配置文件

    VOL 119 04 2020-05 今天距2021年241天 这是ITester软件测试小栈第119次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  8. Python接口自动化之数据驱动

    VOL 118 01 2020-05 今天距2021年244天 这是ITester软件测试小栈第118次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  9. Python接口自动化之登录接口测试

    VOL 117 29 2020-04 今天距2020年246天 这是ITester软件测试小栈第117次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

最新文章

  1. mysql 超时异常_java.sql.SQLException:超出锁定等待超时;尝试在MYSQL中重启事务异常...
  2. 【脚下有根】之Skia库的matrix代码解读
  3. 集群、分布式、负载均衡区别
  4. HALCON示例程序connection.hdev分割连通域
  5. Java高级篇(二)——网络通信
  6. java和vb.net des加密_vb.net DES加密与解密
  7. ASP输出生成Word 、Excel、Txt文件的方法
  8. set列表对象去重_set去重应用
  9. 全面Severless化只需7天!看南瓜电影的云上极速升级
  10. RHEL6 开启远程桌面
  11. 【记录】数控程序的指令代码---标准G代码与标准M代码
  12. 发现策略中的孪生兄弟——期权交易中的等价或相似策略解析
  13. python脚本检查文件内容
  14. 虚拟磁盘管理 无法启动服务器,运行虚拟磁盘管理器提示"RPC服务器不可用"分析与解决方案...
  15. 安装pyqt5时报错Preparing metadata (pyproject.toml) ... error
  16. pg_pdr的生成方式
  17. 国内五款好用的开源建站系统
  18. 【笨木头Unity】入门之旅003:HelloWorld
  19. Xilinx 7系列FPGA config设计文档
  20. 安徽大学第五届ACM/ICPC程序设计竞赛——学位的诱惑(又是水题)

热门文章

  1. 推荐一个分布式JVM监控工具,非常实用!
  2. 每一个开发人员都应该懂的 UML 规范
  3. 干掉 FastJson
  4. 李沐:五年工作反思!
  5. 4000字超干货!《统计学习方法》啃书指南(1)
  6. 旷视CEO竟遭监听敲诈:不给300万就卖敏感信息录音!网友:利好无人驾驶?
  7. 教育部:国外经历不得作为高校招聘限制性条件
  8. AI公司融了1500万美元,却引来LeCun「嘲讽三连」,还要出书调侃CEO?
  9. 北大成功研发 “忘情水” ,可精准删除特定记忆,有望今年进行人体测试
  10. 12岁上中科大,17岁哈佛博士,31岁成哈佛教授,学神认识一下?