前言

有些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 自动上报json信息_python接口自动化5-Json数据处理相关推荐

  1. python接口返回json处理_python 接口返回的json字符串实例

    如下所示: JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数描述 json.dumps将 Python 对象编码成 JSON 字符串 json.loads将已 ...

  2. python post 上传文件_python接口自动化7-post文件上传

    前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...

  3. python绕过付费认正_python接口自动化三(登录绕开验证码及发帖)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 但是这里需要明确 ...

  4. python中sign函数图片_python接口自动化-实现sign签名(MD5加密)

    一,前序 今天在学习sign签名的的时候,了解了下常用的sign加密算法,突然心血来潮,想用python试着将签名生成的通用步骤用代码实现出来,虽然中间经历了一点小波折,请教了开发同事后,按照他给的思 ...

  5. python 接口测试 如何写配置文件_python接口自动化之ConfigParser配置文件的使用详解...

    前言:目前我们使用的绝大多数计算机程序,无论是办公软件,浏览器,甚至游戏.视频都是通过菜单界面系统配置的,它几乎成了我们使用机器的默认方式.而在python中,也有这样的一个配置模块可以把代码可配置化 ...

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

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

  7. python自动化接口测试中的cookies怎么实现_Python接口自动化之cookie、session应用

    ------·今天距2021年260天·------ 这是ITester软件测试小栈第112次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化-requests模块之post请 ...

  8. python接口自动化实战(框架)_python接口自动化框架实战

    python接口测试的原理,就不解释了,百度一大堆. 先看目录,可能这个框架比较简单,但是麻雀虽小五脏俱全. 各个文件夹下的文件如下: 一.理清思路 我这个自动化框架要实现什么 1.从excel里面提 ...

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

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

最新文章

  1. 成功解决安装cuda的时候,下载的文件自动消失,并且出现An unknown error has occurred
  2. 做报表必看!一个工具就可搞定中国式复杂报表需求
  3. 两个listmap合并去重_Excel 二维表,相同行标题的多个值各占一行,如何合并为一行?...
  4. linux篇:查看Linux版本号
  5. mysql 5.7.18 winx64安装配置方法
  6. 海底捞涨价,有错吗?
  7. ls mac 显示最近修改日期_Find Any File for Mac(Mac本地文件搜索工具)
  8. LeetCode 1252. 奇数值单元格的数目
  9. 二叉树的一些leetcode题目+python(c++)
  10. google 浏览器默认打开控制台_chrome浏览器使用 Console(控制台)
  11. 【阿里云 CDP 公开课】 第二讲:CDH/HDP 何去何从
  12. Android 基础知识 -- Linux环境搭建
  13. java 密码加密_Java如何实现密码加密
  14. 计算机信息计量单位kgm,工程单位换算表.pdf
  15. url 里面 等号_【Python成长之路】从零学爬虫给微信公众号阅读量作个弊:刷阅读量...
  16. WIN8 与WIN7的64位及32位 分别对Legacy BIOS+MBR和UEFI+GPT两种启动方式和分区架构下的安装可行性分析
  17. 海康摄像头检测摄像头是否处于在线状态
  18. Python实现车牌摇号小程序
  19. Java多线程学习笔记(三)休眠(sleep),让步(yield),插队(join)
  20. 几种线程安全的Map

热门文章

  1. Flutter高内聚组件怎么做?阿里闲鱼打造开源高效方案!
  2. 服务化改造实践(二)| Dubbo + Kubernetes
  3. 45分钟,411个中小品牌天猫双11实现新跨越
  4. 腾讯自研分布式远程Shuffle服务Firestorm正式开源
  5. 如何在容器内高效编程?
  6. 金山云纳斯达克敲钟上市 不负时代的机遇
  7. 我最喜欢的云 IDE 推荐!
  8. 详解CPU几个重点基础知识
  9. 刷爆了!GitHub标星1.6W,这个 Python 项目太实用!
  10. 程序员加班很严重吗?看看国外程序员怎么怼老板!