python接口自动化5-Json数据处理

时间:2021-10-07 20:52:36

前言

有些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

python接口自动化5-Json数据处理

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"]

python接口自动化5-Json数据处理

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/,搜索某个单号,判断它的状态是不是已签收

python接口自动化5-Json数据处理

2. 实现代码如下

python接口自动化5-Json数据处理

五、参考代码:

# 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接口自动化完整版-------------------------

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

作者:上海-悠悠 QQ交流群:588402570

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

python接口自动化5-Json数据处理

python接口自动化5-Json数据处理的更多相关文章

  1. python接口自动化读取json,yaml配置文件+封装requests+unittest+HTMLRunner实现全自动化

    # coding=utf-8 import json import requests class TestApi(object): """ /* @param: @ses ...

  2. python接口自动化-传 json 参数

    一.post请求有两种方法传json参数: 1.传json参数(自动转 json ) 2.传data参数(需 json 转换) 代码参考: payload = { "Jodie": ...

  3. python接口自动化13-data和json参数傻傻分不清

    前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参数,那么问题来了:到底什么时候该传json,什么时候该传data? 一.识别json参数 1.在前面 ...

  4. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...

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

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

  6. python接口自动化 -参数关联(一)

    原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...

  7. python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.sessi ...

  8. python接口自动化1-发送get请求

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了. 一.环境安装 1.用pip安装requests模块 >>pip in ...

  9. python接口自动化16-multipart/form-data上传图片

    前言 在提交表单操作的时候,经常会遇到图片上传的操作,图片上传是一个单独的接口,本篇以禅道为例,介绍如何上传图片 上传接口 1.以禅道上提交bug为例,在选择图片时,点确定按钮,就是上传图片了 2.用 ...

随机推荐

  1. WinForm 与WPF 窗体之间的想到调用

    先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...

  2. Terminating app due to uncaught

    1>Images.xcassets: A 60x60@2x app icon is required for iPhone apps targeting iOS 7.0 and later 图片 ...

  3. 下拉刷新--第三方开源--PullToRefresh

    效果预览图: 下载地址:https://github.com/chrisbanes/Android-PullToRefresh activity_main.xml: <RelativeLayou ...

  4. C&num;图片处理之&colon; 另存为压缩质量可自己控制的JPEG

    处理图片时常用的过程是:读入图片文件并转化为Bitmap -> 处理此Bitmap的每个点以得到需要的效果 -> 保存新的Bitmap到文件使用C#很方便的就可以把多种格式的图片文件读到B ...

  5. socket 通信 入门3 android 客户端 C&num; 服务端

    这是一个android端操控服务器的例子  就是发送简单指令到服务器  然后服务器响应什么的... 当然这里是未完成的  只是简单展示一下大致思路 首先连接建立起来后  服务端给客户端一条信息  告诉 ...

  6. 使用STS时遇到的小&OpenCurlyDoubleQuote;麻烦”

    背景 今天尝试着用STS(Spring Tool Suite)建立了一个Maven webapp来做一个SpringMVC的小demo,在使用的过程中就遇到了一些小麻烦!!记录在此的目的,其一是为了自 ...

  7. 2015 多校联赛 ——HDU5294(最短路,最小切割)

    Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  8. resultset 查询时返回多个相同值

    背景 做个简单的接口开发,拿到的平台比较不理想,好久没重新搭建一个了,正好练练手.用了基础的servlet,maven,logback(log4j不支持格式化,比较烦人),fastjson,druid ...

  9. html5-嵌入图片

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  10. RunAsAdmin

    program AdminCMD; {$APPTYPE CONSOLE} uses  Windows,  ShellApi,  SysUtils; function RunAsAdmin(const ...