中资源 网站域名解析,北京网站设计案例,网站建设源码开发,wordpress上传设置前言有些post的请求参数是json格式的#xff0c;这个前面第二篇post请求里面提到过#xff0c;需要导入json模块处理。一般常见的接口返回数据也是json格式的#xff0c;我们在做判断时候#xff0c;往往只需要提取其中几个关键的参数就行#xff0c;这时候就需要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_keysTrue) {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.首先说下为什么要encodepython里面bool值是True和False,json里面bool值是true和false,并且区分大小写这就尴尬了明明都是bool值。在python里面写的代码传到json里肯定识别不了所以需要把python的代码经过encode后成为json可识别的数据类型。2.举个简单例子下图中dict类型经过json.dumps()后变成strTrue变成了true,False变成了fasle3.以下对应关系表是从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还是False2.如果以content字节输出返回的是一个字符串{success:true}这样获取后面那个结果就不方便了3.如果经过json解码后返回的就是一个字典{usuccess: 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 requestsurl 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, headersheaders,verifyFalse) result r.json() data result[data] # 获取data里面内容 print data print data[0] # 获取data里最上面有个 get_result data[0][context] # 获取已签收状态 print get_resultif u已签收 in get_result: print 快递单已签收成功 else: print 未签收