You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 函数:串联整个流程,完成文件加载、差异对比、结果输出与文件写入。

使用步骤

  1. 将 json_old.json 和 json_new.json 放在代码同一目录下。
  2. 运行代码后,控制台会打印格式化后的差异结果,同时生成 result.json 文件保存差异数据。

内容的提问来源于stack exchange,提问作者eugenelosikhin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:45:28