首页 快递行业资讯 python接口自动化5-Json数据处理

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

前语 有些post的恳求参数是json格局的,这个前面第二篇post恳求里边提到过,需求导入json模块处理。 一般常见的接口回来数据也是json格局的,咱们在做判别时分,往往只需…

前语

有些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 "未签收"










本文来自网络,不代表快递资讯网立场。转载请注明出处: http://www.llaiot.com/express-industry-information/3100.html
上一篇
下一篇

为您推荐

返回顶部