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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:42:20