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

Python处理JSON文件解决Firebase上传时键名含非法字符的报错问题

Firebase 非法键名批量处理方案

Firebase 的键名规则禁止包含 .、$、#、[、]、/ 这类特殊字符,你遇到的报错就是键名中的英文句号触发的规则限制。以下是可直接运行的 Python 处理脚本,可批量替换所有键名中前缀的数字及紧随其后的英文句号和空格,支持任意嵌套结构的 JSON 文件。

完整处理代码

import json
import re

def process_json_keys(obj):
    # 递归处理JSON中所有键名
    if isinstance(obj, dict):
        new_dict = {}
        for old_key, value in obj.items():
            # 匹配键开头的「数字+英文句号+可选空格」,替换为空
            new_key = re.sub(r'^\d+\.\s*', '', old_key)
            new_dict[new_key] = process_json_keys(value)
        return new_dict
    elif isinstance(obj, list):
        # 处理列表中的每个元素
        return [process_json_keys(item) for item in obj]
    else:
        # 基础数据类型直接返回
        return obj

# --------------- 替换为你自己的文件路径 ---------------
INPUT_JSON_PATH = "原始文件.json"
OUTPUT_JSON_PATH = "处理后可上传至Firebase的文件.json"
# ------------------------------------------------------

if __name__ == "__main__":
    # 读取原始JSON
    with open(INPUT_JSON_PATH, "r", encoding="utf-8") as f:
        raw_data = json.load(f)
    
    # 处理所有键名
    processed_data = process_json_keys(raw_data)
    
    # 导出处理后的JSON
    with open(OUTPUT_JSON_PATH, "w", encoding="utf-8") as f:
        json.dump(processed_data, f, indent=4, ensure_ascii=False)
    
    print("键名处理完成,新文件已生成")

处理效果

你提供的JSON片段处理后结果如下,完全符合Firebase的键名规则:

"2021-09-24 20:00:00": {
    "open": "146.9300",
    "high": "147.0100",
    "low": "146.9300",
    "close": "146.9700",
    "volume": "28859"
}

注意事项

  • 脚本支持任意嵌套层级的字典、列表结构JSON,无需修改逻辑即可适配你的文件结构
  • 执行前请将代码中的输入输出路径替换为你本地的实际文件路径
  • 处理完成后可先打开新生成的JSON文件核验键名是否符合预期,再上传到Firebase

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:24:02