手记

python中对json文件的读写

**

在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!!

1600人推荐
随时随地看视频
慕课网APP