Firebase Realtime Database导入JSON报键非法错误如何解决
报错原因
Firebase Realtime Database 对节点键名有强制校验规则:键名不允许为空,且不能包含 $、#、[、]、.、/ 六个特殊字符。
phpMyAdmin默认导出的JSON文件存在两类不符合规则的内容,是触发报错的核心原因:
- 文件头部携带的导出插件版本、导出参数、数据库名称等元信息中,存在带特殊字符的非业务键名
- 数据表名、表内字段名可能包含上述非法字符,或是存储记录的数组存在空项,自动生成空键
修复方案
按以下步骤处理导出的JSON文件即可正常导入:
- 清理无关元信息
直接删除JSON开头的导出工具相关头信息,仅保留业务数据部分。整理后的顶层结构应为普通对象,以数据表名(如book_master、colony_master)作为顶层键,对应值为该表的记录集合,不要用数组包裹全量数据。 - 全层级替换非法键名
编写简单处理脚本递归遍历JSON的所有嵌套层级,逐一对键名做合规处理:- 空键对应的节点直接删除
- 键名中出现的
$、#、[、]、.、/全部替换为无冲突的合规占位符,例如将.替换为_dot_、/替换为_slash_即可,注意仅修改键名,不要改动字段对应的存储值 - 针对phpMyAdmin默认导出的数字索引记录数组,先清除数组内所有空元素;建议进一步将数组结构转换为以业务主键(如书籍ID、群落ID)为键的对象结构,既避免空键问题,也能提升后续Firebase的查询效率。
- 验证后全量导入
处理完成后先截取单张表的少量测试数据(10条以内)在Firebase控制台试导入,确认无键名报错后再上传全量文件。
注意:不要仅检查顶层表名的键名合规性,记录内部深层嵌套的字段键名只要包含非法字符,同样会触发报错,必须做全层级递归校验。
内容的提问来源于stack exchange,提问作者user19152825
相关产品推荐
相关产品推荐

