如何更高效地重映射JSON对象字段以适配Django序列化格式
优化实现方案
你可以直接基于源数据构造符合要求的新字典,完全不需要修改原数据、手动删除冗余字段,代码会更简洁易维护,性能也更好。
优化后代码示例
def re_serialize_reg_json(): # 提前定义源字段到目标fields字段的映射关系,后续修改字段仅需调整此处 FIELD_MAPPING = { ' ': 'Name', 'Cell': 'Cell', 'email address': 'Email Address', 'Notes': 'Notes', 'Distributor': 'Distributor', 'State': 'State', 'Brand': 'Brand' } # 固定model名提为常量,后续修改只需改一处 TARGET_MODEL = 'homepage.territorymanager' raw_data = load_file() # 直接生成目标结构,不修改原始加载的数据 return { index: { 'pk': item['ID'], 'model': TARGET_MODEL, 'fields': { target_key: item[raw_key] for raw_key, target_key in FIELD_MAPPING.items() } } for index, item in raw_data.items() }
方案优势
- 省去了所有手动增删字段的操作,不会修改原始加载的数据,避免误改风险
- 字段映射、固定参数统一管理,后续需要调整字段、修改model名时,只需要修改头部的常量定义,不需要改动业务逻辑
- 使用字典推导式实现,代码逻辑更清晰,运行效率比反复修改同一字典更高
可选容错优化
如果你的源数据可能存在字段缺失的情况,可以把fields构造部分的取值逻辑换成get方法,避免触发KeyError:
'fields': { target_key: item.get(raw_key, '') for raw_key, target_key in FIELD_MAPPING.items() }
内容的提问来源于stack exchange,提问作者Justin Benfit
相关产品推荐
相关产品推荐

