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

