Blogger Information
Blog 41
fans 0
comment 1
visits 40393
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Python高效编程技巧实战(16)
yeyiluLAMP
Original
624 people have browsed it

在python当中如何读写json文件呢?我们可以使用标准库当中的json模块,其中的loads,dumps函数可以完成对json数据的读写

json.dumps 这个函数,它可以将一个python对象转化成json的字符串

In [65]: l
Out[65]: [1, 2, 'abc', {'name': 'Bob', 'age': 22}]    #把这样一个python对象转化成json字符串

In [66]: json.dumps(l)
Out[66]: '[1, 2, "abc", {"name": "Bob", "age": 22}]'  #可以看到经过这样一个转化,原本的数据还是发生了变化


In [68]: d
Out[68]: {'b': None, 'a': 5, 'c': 'abc'}

In [69]: json.dumps(d)
Out[69]: '{"b": null, "a": 5, "c": "abc"}'   # 可以看到其他的都没变,只不过这个None变成null

dumps函数还有别的参数            
In [6]: json.dumps(l,separators=[',',':'])
Out[6]: '[1,2,"abc",{"name":"Bob","age":22}]'   #后面的参数是它默认的参数,一个逗号空格和冒号空格

还有一个参数用于排序     
In [10]: json.dumps(d,sort_keys=True)           #默认是False
Out[10]: '{"a": 5, "b": null, "c": "abc"}'   
上面是将python对象转化成json字符串,那么反过来如何讲json字符串转化成python对象           

使用json.loads()                                
In [21]: l2 = json.loads(json.dumps(l))         #此时的l2又变回到一个列表

In [22]: l2
Out[22]: [1, 2, 'abc', {'name': 'Bob', 'age': 22}]

In [22]: l2
Out[22]: [1, 2, 'abc', {'name': 'Bob', 'age': 22}]

In [23]: l2[0]
Out[23]: 1

In [24]: l2[2]
Out[24]: 'abc'

In [27]: d
Out[27]: {'b': None, 'a': 5, 'c': 'abc'}

In [30]: d2 = json.loads(json.dumps(d))

In [29]: d2
Out[29]: {'b': None, 'a': 5, 'c': 'abc'}

In [32]: d2['b']

In [33]: d2['a']
Out[33]: 5

   
接下来看另外两个函数,他们两个其实和上面两个的功能一样,只不过接口不一样,json.load和json.dump接受的文件   
 In [3]: l = [1,2,'abc',{'name':'Bob','age':22}]

In [4]: with open('demo.json','w') as f:
   ...:     json.dump(l,f)                     #把l写入到文件当中,此时不再是返回一个json格式的字符串
   ...:     

In [5]: f
Out[5]: <_io.TextIOWrapper name='demo.json' mode='w' encoding='UTF-8'>

查看这个json文件
In [6]: cat demo.json
[1, 2, "abc", {"name": "Bob", "age": 22}]
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post