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)