Python实现指定字段对比JSON文件并输出差异至文件的需求
Python JSON 指定字段差异对比方案
核心需求
对比 json_old.json 和 json_new.json 中 diff_list 指定的 services、staff、datetime 字段,捕获每个字段的旧值与新值差异,将结果输出到控制台并写入 result.json。
完整修改代码
import json def load_json(file_path): """加载JSON文件""" with open(file_path, 'r', encoding='utf-8') as f: return json.load(f) def compare_specific_fields(old_data, new_data, diff_fields): """对比指定字段的差异""" diff_result = {} for field in diff_fields: old_val = old_data.get(field) new_val = new_data.get(field) if old_val != new_val: diff_result[field] = { "old_value": old_val, "new_value": new_val } return diff_result def main(): # 定义需要对比的字段列表 diff_list = ["services", "staff", "datetime"] # 加载两个JSON文件 old_json = load_json("json_old.json") new_json = load_json("json_new.json") # 执行字段对比 differences = compare_specific_fields(old_json, new_json, diff_list) # 输出差异到控制台 print("字段差异结果:") print(json.dumps(differences, indent=2, ensure_ascii=False)) # 将差异写入result.json with open("result.json", 'w', encoding='utf-8') as f: json.dump(differences, f, indent=2, ensure_ascii=False) if __name__ == "__main__": main()
代码说明
load_json函数:封装JSON文件读取逻辑,统一使用UTF-8编码避免乱码问题。compare_specific_fields函数:遍历指定字段列表,逐一对比新旧值,仅记录存在差异的字段及其新旧值;若字段在某一JSON中缺失,对应值会设为None,明确显示缺失状态。main函数:串联整个流程,完成文件加载、差异对比、结果输出与文件写入。
使用步骤
- 将
json_old.json和json_new.json放在代码同一目录下。 - 运行代码后,控制台会打印格式化后的差异结果,同时生成
result.json文件保存差异数据。
内容的提问来源于stack exchange,提问作者eugenelosikhin
相关产品推荐
相关产品推荐

