**
在web应用当中常用json(javascript object notation)格式传输数据,比如这个URL。here,打开以后,我们用谷歌一个插件jsonview,就能清楚的看见返回的json格式的。**
那么在python当中如何读写json文件呢?
我们可以使用标准库当中的json模块,其中的loads,dumps函数可以完成对json数据的读写。
import json
json. #返回所有旗下的函数
json.JSONDecoder json.decoder json.dumps json.load json.scanner
json.JSONEncoder json.dump json.encoder json.loads # 这里我们主要用的就是 json.loads和json.dumps以及json.load和json.dump
先看json.dumps 这个函数,它可以将一个python对象转化成json的字符串。
l = [1,2,'abc',{'name':'zhangsan','age':'99'}] #把这样一个python对象转化成json字符串
json.dumps(l)
=>'[1,2,"abc",{"age":"99","name":"zhangsan"}]' #可以看到经过这样一个转化,原本的数据还是发生了变化。
d = {'b':None,'a':5,'c':'zxc'}
json.dumps(d)
=> '{"a":"5","c":"zxc","b":"null"}' # 可以看到其他的都没变,只不过这个None变成null
这个dumps函数还有别的参数
json.dumps(l,separators=[', ',': ']) #后面的参数是它默认的参数,一个逗号空格和冒号空格
除此之外它还有一个参数用于排序。
json.dumps(d,sort_keys=True) #默认是False
=> '{"a":"5","b":"null","c":"zxc",}'
上面是将python对象转化成json字符串,那么反过来如何讲json字符串转化成python对象。
用到的就是json.loads()
l2 = json.loads('[1,2,"abc",{"age":"99","name":"zhangsan"}]')
l2
=>[1,2,u'abc',{u'age':99,u'name':'zhangsan'}] #此时的l2又变回到一个列表
l2[0]
=>1
l2[1]
=>2
再把刚才那个字典用json.loads()
d2 = json.loads('{"a":"5","c":"zxc","b":"null"}')
d2
=>{u'a':5,u'b':None,u'c':'zxc'}
d2[a]
=>5
接下来来看另外两个函数,他们两个其实和上面两个的功能一样,只不过接口不一样,json.load和json.dump接受的文件。
with open('demo.json','wb') as f:
json.dump(l,f) #把l写入到文件当中,不是返回一个json格式的字符串了。
此时我们去查看这个json文件。
cat demo.json
=>[1,2,"abc",{"age":99,"name":"zhangsan"}]
当然了load也是跟这个一样的,可以自己再试试。
over!!