在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}]