Python接口自动化--Json数据处理 5
1.Json模块简介,全名JavaScript Object Notation,轻量级的数据交换格式,常用于http请求中。
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"]'
2.Encode(python->Json),在python和json中的bool值,不同,如下图,所以不转换的话,会报错,所以需要把python的代码经过encode后成为json可识别的数据类型。
| 布尔值 | python | json |
| 真 | True | true |
| 假 | False | false |
# _*_ encoding:utf-8 _*_ import requests
import json #python的字典
payload = {"cye":True,
"json":False,
"python":"",} print (type(payload))
#输出
# <type 'dict'> #转化成json格式
data_json = json.dumps(payload)
print (type(data_json))
#输出
# <type 'str'>
print (data_json)
# 输出
# {"python": "22137284235", "json": false, "cye": true}
Python经过encode成Json的数据类型
| Python | Json |
| dict | object |
| list,tuple | array |
| str,long,float | number |
| True | true |
| False | false |
| None | null |
3.decode(Json-->Python)
字符串:s = {"success":true}
转成字典:j = s.json(),然后可以通过 j["success"]=true来获取字典的相应key的value值
Json数据转成python可识别的数据,对应关系如下
| Json | Python |
| object | dict |
| array | list |
| string | unicode |
| number(int) | int,long, |
| number(real) | float |
| true | True |
| false | False |
| None | null |
实例:查询快递单号
# _*_ coding:utf-8 _*_ import requests
import json id = 8881*************
url = "http://www.kuaidi.com/index-ajaxselectcourierinfo-%s-yuantong.html"%id
# print (url) head = {"Connection": "keep-alive",
"X-Requested-With": "XMLHttpRequest",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6"} r = requests.get(url=url,headers=head,verify=True)
j = r.json()
data = j["data"]
print (data[0])
print (data[0]["context"])
#输出结果
#{u'context': u'\u5ba2\u6237 \u7b7e\u6536\u4eba: \u90ae\u653f\u6536\u53d1\u7ae0 \u5df2\u7b7e\u6536 \u611f\u8c22\u4f7f\u7528\u5706\u901a\u901f\u9012\uff0c\u671f\u5f85\u518d\u6b21\u4e3a\u60a8\u670d\u52a1', u'time': u'2018-01-22 15:43:23'}
#客户 签收人: 邮政收发章 已签收 感谢使用圆通速递,期待再次为您服务
Python接口自动化--Json数据处理 5的更多相关文章
- python接口自动化-json数据处理
前言 有些post的请求参数是json格式的,需要导入json模块进行处理,json是一种数据交换格式,独立于编程语言 一般常见的接口返回数据也是json格式的,我们在做判断的时候,往往只需要提取其中 ...
- python接口自动化5-Json数据处理
前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...
- python接口自动化--json解析神器jsonpath
前言 做接口测试的时候,大部分情况下返回的是json数据,我们需要对返回的json断言. 当返回的数据量比较大,并且嵌套的层级很深的时候,很多小伙伴不会取值,往往在返回结果取值上浪费很多时间.一直在寻 ...
- python接口自动化13-data和json参数傻傻分不清
前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参数,那么问题来了:到底什么时候该传json,什么时候该传data? 一.识别json参数 1.在前面 ...
- python接口自动化(十)--post请求四种传送正文方式(详解)
简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...
- python接口自动化-参数化
原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...
- python接口自动化 -参数关联(一)
原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...
- python接口自动化3-自动发帖(session)
前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.sessi ...
- python接口自动化1-发送get请求
前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了. 一.环境安装 1.用pip安装requests模块 >>pip in ...
随机推荐
- .29-浅析webpack源码之doResolve事件流(1)
在上一节中,最后返回了一个resolver,本质上就是一个Resolver对象: resolver = new Resolver(fileSystem); 这个对象的构造函数非常简单,只是简单的继承了 ...
- Word文档中多个编号放同一行的方法(非技术)
最近在帮公司出应届生校招面试题,为了方便,选择题部分的答案用了Word的[编号]功能!如下截图所示: 这么简短的四个答案这么竖着放很占空间(打印时也很浪纸张),能不能让它们全部横放在同一行,或两两一组 ...
- 5.C#知识点:ref和Out关键字浅谈
首先我们要知道ref和out在C#里面是什么? 答:它们俩是C#里面的关键字. 他们俩是干啥的呢? 答:他们俩是方法参数的修饰符号,一但使用,方法定义和方法都用都要使用这个关键字,这一点是死规定. 好 ...
- Retrofit 2.0 使用和原理
使用教程: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1016/3588.html retrofit2 与okhttp关系 ...
- python正则表达式3-模式匹配
re.S,使 '.' 匹配换行在内的所有字符 >>> pattern=r'ghostwu.com' >>> import re >>> re.f ...
- Codeforces852G(字符串hash)
G. Bathroom terminal time limit per test:2 seconds memory limit per test:256 megabytes input:standar ...
- Django Rest framework 之 分页
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- vue2.0父子组件通信的方法
vue2.0组件通信方法:props传值和emit监听.(.sync方法已经移除.详情请点击)(dispatch-和-broadcast方法也已经废弃) props方法传值:Props 现在只能单项传 ...
- 鼠标滚轮更改transform的值(vue-scroller在PC端的上下滑动)
目前上拉刷新,下拉加载,以及区域回弹的组件,绝大多数都是通过transform去实现的.在移动端效果很好,但是PC端使用鼠标拖拽的方式,查看下文首先不符合逻辑,其次容易点进其他页面. 起初,项目的初衷 ...
- 2018-10-19 00:13:35 ArrayList
获取集合元素的长度用的是size方法. 传入Object类型的值,返回boolean值的remove方法,含义是判断是否删除成功. 传入索引值的remove方法,返回的是被删除的元素. 修改值得set ...