前言
有些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"]
四、案例分析(此接口已經過期,可以看看理解一下)
1.比如打開快遞網:http://www.kuaidi.com/,搜索某個單號,判斷它的狀態是不是已簽收
2. 實現代碼如下
原文鏈接:https://www.cnblogs.com/yoyoketang/p/6843514.html