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

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

欢迎大家来到IT世界,在知识的湖畔探索吧!

前言

有些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接口自动化-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.以接口返回成功结果:{‘status’: ‘success’, ‘msg’: ‘接口连接成功!’}为例,我们其实最想知道的是success这个字段返回的是True还是False

2.如果以content字节输出,返回的是一个字节序列,这样获取后面那个结果就不方便了

3.如果经过json解码后,返回的就是一个字典,这样获取后面那个结果,就用字典的方式去取值

python接口自动化-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接口自动化-Json数据处理

2. 实现代码如下

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

五、参考代码:

# coding:utf-8
import requests
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 (“未签收”)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/36611.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信