使用json进行多次dump操作,例如程序执行过程中被序列化的内容有修改,建议保存到多个不同文件,就像以下的test.text和test1.text
1 #_*_coding:utf-8_*_ 2 #__author__ = "csy" 3 import json 4 5 info = { 6 'name':'csy', 7 'age':'31', 8 'job':'工人' 9 } 10 f = open("test.text","w") 11 json.dump(info,f) #相当于f.write(pickle.dumps(info)) 12 13 f1 = open("test1.text","w") 14 info['age']=30 15 json.dump(info,f1) 16 f1.close() 17 f.close()
否则多次dump保存在相同文件,数据会写在同一行:
1 #_*_coding:utf-8_*_ 2 #__author__ = "csy" 3 import json 4 5 info = { 6 'name':'csy', 7 'age':'31', 8 'job':'工人' 9 } 10 f = open("test.text","w") 11 json.dump(info,f) 12 13 info['age'] = '30' 14 json.dump(info,f) 15 16 f.close()
test.text内容:
{"age": "31", "job": "\u5de5\u4eba", "name": "csy"}{"age": "30", "job": "\u5de5\u4eba", "name": "csy"}
用json.load重新加载时会报错:
1 #_*_coding:utf-8_*_ 2 #__author__ = "csy" 3 import json 4 5 f = open("test.text","r") 6 data = json.load(f) #相当于data = pickle.loads(f.read()) 7 f.close() 8 9 print(data)
输出:
Traceback (most recent call last):
File "C:/Users/chenshiyang/PycharmProjects/9.py", line 6, in <module>
data = json.load(f)
File "C:\Users\chenshiyang\AppData\Local\Programs\Python\Python35\lib\json\__init__.py", line 268, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\chenshiyang\AppData\Local\Programs\Python\Python35\lib\json\__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "C:\Users\chenshiyang\AppData\Local\Programs\Python\Python35\lib\json\decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 52 (char 51)