如何在Python中修改JSON文件的键名?以修改Class123键为例
修改JSON键名的解决方案
当然可以修改JSON里的键名啦!Python字典本身不支持直接修改键名,但我们可以通过新增新键并赋值旧键的值,再删除旧键的方式实现,下面针对你的需求一步步完善代码:
一、修改顶层键(比如你的"Class123")
结合你已有的初始代码,完整的实现如下:
import json # 读取JSON文件 with open('my.json', 'r') as json1: data = json.load(json1) # 定义要修改的旧键和新键 old_key = "Class123" new_key = "NewClassName" # 替换成你实际需要的键名 # 先检查旧键是否存在,避免KeyError if old_key in data: # 用pop方法删除旧键并获取它的值,同时赋值给新键 data[new_key] = data.pop(old_key) # 将修改后的数据写回JSON文件(indent=4让JSON格式化更易读) with open('my.json', 'w') as json1: json.dump(data, json1, indent=4)
这段代码的核心逻辑是data.pop(old_key):它会删除字典中的old_key并返回对应的值,我们直接把这个值赋值给new_key,就完成了键名的替换,同时保留原有的值。
二、如果需要修改嵌套层级的键
如果之后你需要修改示例中name1→name2→name3这类嵌套键,可以用递归函数遍历所有层级的字典(甚至列表)来修改:
def rename_nested_keys(target_dict, old_key, new_key): # 处理字典类型 if isinstance(target_dict, dict): # 当前层级存在目标键则修改 if old_key in target_dict: target_dict[new_key] = target_dict.pop(old_key) # 递归处理每个值 for value in target_dict.values(): rename_nested_keys(value, old_key, new_key) # 处理列表类型(如果JSON里有数组的话) elif isinstance(target_dict, list): for item in target_dict: rename_nested_keys(item, old_key, new_key) # 调用函数修改嵌套键,比如把"name3"改成"new_name3" rename_nested_keys(data, "name3", "new_name3") # 记得写完后同样要把数据写回文件 with open('my.json', 'w') as json1: json.dump(data, json1, indent=4)
这个函数会递归遍历JSON解析后的字典/列表,找到所有匹配的旧键并替换成新键,适合复杂嵌套结构的场景。
注意事项
- 一定要检查旧键是否存在再修改,否则会抛出
KeyError异常 - 修改后必须将数据写回文件,否则修改只停留在内存中,不会影响原文件
内容的提问来源于stack exchange,提问作者Kaira Asia
相关产品推荐
相关产品推荐

