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

Python如何批量替换JSON结构中指定键的匹配值

Python 批量替换JSON指定字段值实现方案

核心设计

  • 将所有类型替换规则抽离为独立配置字典,后续新增、修改规则无需调整核心遍历逻辑
  • 采用递归遍历方式处理JSON结构,无论type字段嵌套在哪一层都可命中替换,适配后续结构变动
  • 不匹配替换规则的原值完整保留,不会改动其他字段内容

替换规则配置

所有同类值替换规则统一维护在如下字典中,新增规则直接追加键值对即可:

TYPE_REPLACE_RULES = {
    "datetimeoffset": "dateTime",
    "Int32": "integer",
    # 示例:后续新增规则直接按 原值:目标值 格式追加即可
    # "Int64": "long",
    # "float": "double"
}

完整实现代码

import json

def replace_target_value(obj, replace_rules, target_key="type"):
    # 处理列表节点:遍历每个元素递归处理
    if isinstance(obj, list):
        return [replace_target_value(item, replace_rules, target_key) for item in obj]
    # 处理字典节点:检查键是否为目标替换键
    if isinstance(obj, dict):
        res = {}
        for key, value in obj.items():
            if key == target_key and value in replace_rules:
                res[key] = replace_rules[value]
            else:
                res[key] = replace_target_value(value, replace_rules, target_key)
        return res
    # 基础类型(字符串、数字等)直接返回
    return obj

if __name__ == "__main__":
    # 替换规则配置
    TYPE_RULES = {
        "datetimeoffset": "dateTime",
        "Int32": "integer"
    }
    # 读取output.json文件
    with open("output.json", "r", encoding="utf-8") as f:
        raw_data = json.load(f)
    # 执行替换
    final_data = replace_target_value(raw_data, TYPE_RULES)
    # 写入处理后的文件,indent=2保证输出格式化缩进
    with open("output.json", "w", encoding="utf-8") as f:
        json.dump(final_data, f, indent=2, ensure_ascii=False)

说明

  • 代码默认直接覆盖原output.json文件,如果需要保留原文件,修改写入阶段的文件名为新名称即可
  • 递归逻辑不会破坏原有JSON的结构顺序,非type字段的内容、格式完全保留
  • 如果后续需要替换其他键的值,只需要修改调用函数时传入的target_key参数即可,无需重写逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:30:47