Python 3写入JSON文件格式求助:如何分隔多个JSON对象
解决Python写入JSON对象时的分隔问题
嘿,我来帮你搞定这个问题!你现在遇到的情况是因为每次写入JSON字符串时没有添加分隔符,导致所有对象都挤在了一起。咱们来一步步解决:
问题根源
你的代码里,file.write(json.dumps(saveData, ensure_ascii=False))只是把每个序列化后的JSON直接追加到文件中,没有在对象之间添加任何分隔符号,所以才会出现多个JSON连在一起的情况。另外还有个小细节:with语句会自动帮你关闭文件,后面的file.close()是多余的,甚至可能引发错误,记得删掉它!
解决方案
方案1:添加空格分隔(符合你给出的示例格式)
只需要在每次写入的JSON字符串后面加上一个空格即可:
import json # 假设results是你的数据源列表 with open(file_name, 'w', encoding='utf-8') as file: for data in results: saveData = {} for k,v in data.items(): saveData[k] = v if v else '' # 写入JSON并添加空格分隔 file.write(json.dumps(saveData, ensure_ascii=False) + ' ') # 这里不需要file.close(),with块会自动处理文件关闭
这样写入后的文件内容就会是你想要的:
{"AbandonmentDate": "", "Abstract": "", "Name": "ABC"} {"AbandonmentDate": "", "Abstract": "", "Name": "ABC"}
方案2:每行一个JSON对象(更推荐的JSON Lines格式)
如果追求更好的可读性,也可以让每个JSON对象单独占一行,这是行业内常用的JSON Lines格式,很多工具都原生支持:
import json with open(file_name, 'w', encoding='utf-8') as file: # 用字典推导式简化saveData的生成逻辑,代码更简洁 for data in results: saveData = {k: v if v else '' for k, v in data.items()} file.write(json.dumps(saveData, ensure_ascii=False) + '\n')
写入后的格式会是:
{"AbandonmentDate": "", "Abstract": "", "Name": "ABC"}
{"AbandonmentDate": "", "Abstract": "", "Name": "ABC"}
内容的提问来源于stack exchange,提问作者Sandeep Singh
相关产品推荐
相关产品推荐

