我们常常会遇到这样的json文件:
[{"id": 4, "text": "LOC", "background_color": "#7c20e0", "text_color": "#ffffff"},
{"id": 5, "text": "MISC", "background_color": "#fbb028", "text_color": "#000000"},
{"id": 6, "text": "ORG", "background_color": "#e6d176", "text_color": "#000000"},
{"id": 7, "text": "PER", "background_color": "#6a74b9", "text_color": "#ffffff"},
{"id": 10, "text": "DATE", "background_color": "#7c20e0", "text_color": "#ffffff"},
{"id": 10, "text": "DATE", "background_color": "#7c20e0", "text_color": "#ffffff"}]
可以看出文件的开头和结尾是“[”,“]”,这种文件中的每一行(一个记录)都是一个字典(dict),然后把所有的字典对象添加至列表中(list)。那么,我们如何来追加内容呢?
方法:
(1)先创建一个列表
(2)将当前json文件中已有的内容读入(append)列表中。
(3)将新增的内容以字典形式添加至列表中。
(4)使用json.dump()将该列表写回原文件。
python实现:
def write_json(obj):
'''
写入/追加json文件
:param obj:
:return:
'''
#首先读取已有的json文件中的内容
item_list = []
with open('labels.json', 'r') as f:
load_dict = json.load(f)
num_item = len(load_dict)
for i in range(num_item):
id = load_dict[i]['id']
text = load_dict[i]['text']
background_color = load_dict[i]['background_color']
text_color = load_dict[i]['text_color']
item_dict = {'id':id, 'text':text,'background_color':background_color, 'text_color':text_color}
item_list.append(item_dict)
#读取已有内容完毕
#将新传入的dict对象追加至list中
item_list.append(obj)
#将追加的内容与原有内容写回(覆盖)原文件
with open('labels.json', 'w', encoding='utf-8') as f2:
json.dump(item_list, f2, ensure_ascii=False)
#obj字典对象为新增内容
obj = {"id": 10,"text": "DATE","background_color": "#7c20e0","text_color": "#ffffff"}
write_json(obj)
参考:https://blog.csdn.net/broccoli2/article/details/103325434