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

使用Python对比JSON文件并标记provider字段变更至新文件

对比JSON文件生成provider变更记录

假设你需要基于username关联两个文件的条目,对比user_id和provider的变化并生成结果文件,以下是用Python实现的方案:

实现步骤

  • 读取file1.json和file2.json并解析为Python列表
  • 以username为键,建立file1中用户数据的索引,方便快速查找
  • 遍历file2的每条数据,和file1中对应username的数据对比,记录变更
  • 将结果写入file3.json

代码实现

import json

# 读取并解析两个JSON文件
with open('file1.json', 'r') as f1:
    data1 = json.load(f1)

with open('file2.json', 'r') as f2:
    data2 = json.load(f2)

# 建立file1的username到用户数据的映射
file1_map = {item['username']: item for item in data1}

result = []

# 遍历file2的每条数据
for item2 in data2:
    username = item2['username']
    item1 = file1_map.get(username)
    
    # 初始化变更记录
    change_record = {
        'username': username,
        'old_user_id': item1['user_id'] if item1 else None,
        'new_user_id': item2['user_id'],
        'old_provider': item1['provider'] if item1 else None,
        'new_provider': item2['provider'],
        'provider_changed': (item1 and item1['provider'] != item2['provider']) if item1 else True
    }
    
    result.append(change_record)

# 将结果写入file3.json
with open('file3.json', 'w') as f3:
    json.dump(result, f3, indent=4)

结果说明

运行代码后,file3.json会包含每条用户的新旧user_id、provider值,以及provider_changed字段标记是否发生变更。针对你提供的测试数据,输出的file3.json内容如下:

[
    {
        "username": "admin1",
        "old_user_id": "123",
        "new_user_id": "12345",
        "old_provider": true,
        "new_provider": true,
        "provider_changed": false
    },
    {
        "username": "admin2",
        "old_user_id": "234",
        "new_user_id": "23456",
        "old_provider": true,
        "new_provider": true,
        "provider_changed": false
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:05:34