JSON(JavaScript Object Notation)是一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集.
一般数据处理
对于本地数据, python就是使用json模块直接dumps(data)和loads(str)罗, 对于文件是dump(data,file)和load(file). python json编码支持基本类型为None, bool, int, float和str以及list, tuple, dict. dict的key需要是字符串类型.
JSON转换时字符串会转为unicode型.u’string’
在json数据中
false和true会转化为False,True;null为转为None
import json
data = {
'name' : 'ACME',
'shares' : 100,
'price' : 542.23
}
#dumps到字符串
json_str = json.dumps(data)
#loads回来
data2 = json.loads(json_str)
## 针对文件
# Writing JSON data
with open('data.json', 'w') as f:
json.dump(data, f)
# Reading data back
with open('data.json', 'r') as f:
data3 = json.load(f)
网络数据处理
使用urllib2/urllib
使用urlopen方法打开网址后, 使用json.load(u)以文件方法来读取.也可以先u.read().decode('utf-8')读取转为字符串后再传给json.loads(str).
import urllib2,json
u=urllib2.urlopen("http://api.crossref.org/works/10.1021/jm0203783")
json.load(u)
注意, 因为是文件形式, 读取一次后即到底, 不能再次调用json.load(u)获取内容.
使用requests
抓取json数据后, 可以直接使用相应对象的json()方法获得json数据, 也可以使用r.text调用字符串数据传递给json获取.
import json,requests
r=requests.get("http://api.crossref.org/works/10.1021/jm0203783")
r.json()
json.loads(r.text)