如何保留JSON文件格式?生成符合规范的差异文件data3.json
解决JSON对比导出格式问题
问题背景
我拥有data1.json和data2.json两个JSON数组文件,需要提取data1中独有的条目输出到data3.json,要求data3.json符合标准JSON数组格式:首尾用[]包裹、每个条目带缩进、最后一个条目无尾部逗号。但当前通过手动拼接字符串生成的代码,导出的data3存在格式错误,比如最后条目带逗号、缩进不符合要求。
解决方案
不要手动拼接JSON字符串,直接使用Python内置的json模块处理,它会自动维护标准的JSON格式。具体实现代码如下:
import json # 读取源JSON文件 with open('data1.json', 'r', encoding='utf-8') as f1: data1 = json.load(f1) with open('data2.json', 'r', encoding='utf-8') as f2: data2 = json.load(f2) # 提取data2中所有userid存入集合,优化查询效率 data2_user_ids = {item['userid'] for item in data2} # 筛选data1中独有的用户条目 data3 = [item for item in data1 if item['userid'] not in data2_user_ids] # 写入目标文件,自动处理格式 with open('data3.json', 'w', encoding='utf-8') as f3: json.dump(data3, f3, indent=4, ensure_ascii=False)
关键说明
json.load()将JSON文件解析为Python列表/字典,避免手动操作字符串带来的格式错误- 用集合存储userid,查询效率远高于遍历列表,适合数据量较大的场景
json.dump()的indent参数控制缩进空格数(示例中为4),自动生成规范的缩进格式,且最后一个条目不会添加尾部逗号ensure_ascii=False保证导出的非ASCII字符(如中文)正常显示
内容的提问来源于stack exchange,提问作者James Black
相关产品推荐
相关产品推荐

