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 ...
随机推荐
- .30-浅析webpack源码之doResolve事件流(2)
这里所有的插件都对应着一个小功能,画个图整理下目前流程: 上节是从ParsePlugin中出来,对'./input.js'入口文件的路径做了处理,返回如下: ParsePlugin.prototype ...
- Jquery 基本动画
1.三组基本的动画 显示:show .隐藏hide.滑入:slideUp.滑出:slideDown.滑入滑出切换:slideTpggle.淡入:fadeIn.淡出:fadeOut.淡入淡出切换:fad ...
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误几种解决方案
报错信息: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.study.ser ...
- POJ3264(KB7-G RMQ)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K otal Submissions: 52651 Case Time Limit: 2 ...
- js-设计模式学习笔记-策略模式
策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换(相互替换:表现为它们具有相同的目标和意图). 策略模式的目的是讲算法的使用与算法的实现分离开来. 一个基于策略模式的程 ...
- 【代码笔记】iOS-将字符串中特定后的字变成红色
一,效果图. 二,代码. ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup ...
- jQuery操作table数据上移、下移和置顶
jQuery 操作table中的tr换行的步骤如下: 1.获取当前tr var $tr = $(this).parents("tr"); 2.移动tr //上移 $tr.prev( ...
- JavaScript中何时使用===,何时使用==
建议尽量都使用===,原因如下: 一致性:使用==对一致性没有任何好处,那么为什么不避免使用呢. 简单和性能:一般来说,===是最简单的操作符,因为它不用进行类型转换.JavaScript引擎的性能参 ...
- KCF的弊端
一.前情提要 如果你对目标跟踪和KCF是什么东西还不了解的话欢迎你看前一篇博文KCF入门详解:https://www.cnblogs.com/jins-note/p/10215511.html ...
- WOSA/XFS PTR Form解析库—FormRule.h
#ifndef _FORMRULE_H_#define _FORMRULE_H_ #include <XFSPTR.H>#include <string>#include &l ...