如何在Firebase Realtime Database中表示空列表、空字典与Null值?
如何在Firebase Realtime Database中存储空列表、空字典和Null值?
我需要在Firebase Realtime Database中存储以下特殊值:
- 空列表(Empty lists)
- 空字典(Empty dictionaries)
- Null / none / nil
但提交包含这些值的键值对时,它们不会被保存到数据库中。举个例子:
更新前数据库JSON
{ "foo": 0 }
Python更新代码
data = { "normal_list": [1, 2, 3], "empty_list": [], "normal_dict": {"bar": "bar2"}, "empty_dict": {}, "null": None, "normal_value": 69 } database.set(data)
更新后数据库JSON
{ "foo": 0, "normal_list": [1, 2, 3], "normal_dict": {"bar": "bar2"}, "normal_value": 69 }
可以看到,空列表、空字典和Null对应的条目都没有被保存。
我尝试过的解决方案是把这些特殊值转换成特定字符串后存入,读取时再转换回原类型:
{ "normal_list": [1, 2, 3], "empty_list": "--emptylist--", "normal_dict": {"bar": "bar2"}, "empty_dict": "--emptydict--", "null": "--none--", "normal_value": 69 }
但这种方式存在安全隐患,比如用户输入的字符串可能和这些特殊标识冲突。我不确定简单的字符串包装能不能避免这类问题。
请问有没有更优的解决办法?或者当前方案是否足够安全易用?
这里的"足够安全易用"定义为:
- 不存在欺骗数据库或程序存储/使用意外值的可能;
- 数据的读写操作简单便捷。
内容的提问来源于stack exchange,提问作者TNTzx
相关产品推荐
相关产品推荐

