使用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
相关产品推荐
相关产品推荐

