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

如何更高效地重映射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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:02