您的位置:首页 > 编程语言 > Python开发

Python2.x自学笔记(一)——Json格式与请求

2017-07-04 00:00 239 查看

简单请求

# 简单的请求响应
import urllib2

response = urllib2.urlopen('http://www.baidu.com/')
html = response.read()
print html



import urllib2

request = urllib2.Request('http://www.baidu.com/')
response = urllib2.urlopen(request)
html = response.read()
print html


JSON操作

JSON对象直接使用

其实就是dict

import json

body_value = {"name":"张三","data":{"cmdtype":"test","currpage":"0","pagesize":"10"}}
print json.dumps(body_value, ensure_ascii=False)


JSON未转义字符串在loads后使用

import json

body_value = '{"name":"张三","data":{"cmdtype":"test","currpage":"0","pagesize":"10"}}'
decoded = json.loads(body_value)
print 'name:',decoded['name']
print 'data.cmdtype:',decoded['data']['cmdtype']
print json.dumps(decoded, ensure_ascii=False)

结果为:

name: 张三
data.cmdtype: test
{"data": {"currpage": "0", "pagesize": "10", "cmdtype": "test"}, "name": "张三"}

ensure_ascii=False不加的话,中文不会被显示正确

在dumps()中添加indent=4后,可格式化json:

print json.dumps(decoded, ensure_ascii=False, indent=4)

{
"data": {
"currpage": "0",
"pagesize": "10",
"cmdtype": "test"
},
"name": "张三"
}

在dumps()中添加sort_keys=True后,可将JSON属性排序:

print json.dumps(decoded, indent=4, sort_keys=True, ensure_ascii=False)

{
"data": {
"cmdtype": "test",
"currpage": "0",
"pagesize": "10"
},
"name": "张三"
}


JSON有转义字符的字符串在loads后使用

import json

body_value = '''
{
"name":"张三",
"data":{
\"cmdtype\":\"test\",
\"currpage\":0,
\"pagesize\":10
}
}
'''
decoded = json.loads(body_value)
print decoded.keys()
print json.dumps(decoded, sort_keys=True, ensure_ascii=False, indent=4)

结果:

[u'data', u'name']
{
"data": {
"cmdtype": "test",
"currpage": 0,
"pagesize": 10
},
"name": "张三"
}


json.loads与eval的区别

import json

body_value = "{\"name\":\"张三\",\"data\":{\"cmdtype\":\"test\",\"currpage\":0,\"pagesize\":10}}"

decoded = eval(body_value)
print decoded.keys()
print json.dumps(decoded, sort_keys=True, ensure_ascii=False, indent=4)
decoded = json.loads(body_value)
print decoded.keys()
print json.dumps(decoded, sort_keys=True, ensure_ascii=False, indent=4)

结果:

['data', 'name']
{
"data": {
"cmdtype": "test",
"currpage": 0,
"pagesize": 10
},
"name": "张三"
}
[u'data', u'name']
{
"data": {
"cmdtype": "test",
"currpage": 0,

3ff0
"pagesize": 10
},
"name": "张三"
}


发送JSON格式请求

import httplib
import json

def http_post():
requrl = 'http://localhost:8999/query/normal'
headerdata = {"Content-type": "application/json"}
body_value = {"name":"张三","data":{"cmdtype":"test","currpage":"0","pagesize":"10"}}
conn = httplib.HTTPConnection("localhost", 8999)
conn.request('POST', requrl, json.dumps(body_value), headerdata)
response = conn.getresponse()
return response.read()

data = http_post()
print data
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python json