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

Python如何提取深层嵌套JSON所有键并替换键名特殊字符

嵌套JSON键特殊字符清理实现方案

需求说明

移除JSON键中包含的#、$、\、&等特殊字符,处理完成后直接回写至原JSON文件。

实现思路

  • 递归遍历JSON所有层级节点,支持提取任意嵌套深度的键值对,不会遗漏深层嵌套字段
  • 对每个键执行特殊字符校验和清理,替换完成后生成符合要求的新JSON结构
  • 直接覆盖写入原JSON文件完成更新

核心代码实现

特殊字符清理函数

import re
import json

def clean_key(raw_key: str) -> str:
    # 正则匹配需移除的特殊字符,可按需扩展规则
    return re.sub(r'[#$\\&]', '', raw_key)

嵌套JSON递归处理函数

解决浅层代码无法处理深层嵌套的问题,兼容字典、数组多层嵌套场景:

def process_nested_json(data):
    if isinstance(data, dict):
        new_dict = {}
        for key, value in data.items():
            cleaned_key = clean_key(key)
            # 递归处理值的嵌套结构
            new_dict[cleaned_key] = process_nested_json(value)
        return new_dict
    elif isinstance(data, list):
        # 遍历处理列表内的所有元素
        return [process_nested_json(item) for item in data]
    else:
        # 字符串、数字等基础类型直接返回
        return data

完整读写执行流程

def update_json_file(file_path: str):
    # 读取原JSON文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        raw_data = json.load(f)
    # 执行全结构清理
    processed_data = process_nested_json(raw_data)
    # 回写至原文件
    with open(file_path, 'w', encoding='utf-8') as f:
        json.dump(processed_data, f, ensure_ascii=False, indent=2)

# 调用示例
if __name__ == "__main__":
    update_json_file("./target.json")

测试用例验证

原始测试JSON:

{
  "user#id": 123,
  "$profile": {
    "nick\\name": "测试用户",
    "info&detail": {
      "age": 20,
      "city#$": "北京"
    }
  },
  "hobbies&list": ["篮球", "读书"]
}

处理后输出结果:

{
  "userid": 123,
  "profile": {
    "nickname": "测试用户",
    "infodetail": {
      "age": 20,
      "city": "北京"
    }
  },
  "hobbieslist": ["篮球", "读书"]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:39:01