使用浮点数作为密钥的Firebase

时间:2013-06-14 16:41:34

标签: python json firebase

我意识到,当将一些JSON数据推送到我的Firebase存储中时,我从服务器获得400 HTTP错误请求,其密钥是浮点数。以下是我得到的回复:

    {"error" : "Invalid data; couldn't parse JSON object, array, or value. Perhaps you're using invalid characters in your key names."}

我发送的数据如下:

'[{"36.5": "4050952597550"}, {"41.5": "4050952597628"}]'

我相信它在Python中完全是一个有效的JSON字符串,因为我在编码/解码时没有错误。

import json
v = [{u'36.5': u'4050952597550'}, {u'41.5': u'4050952597628'}]
print v == json.loads(json.dumps(v))
True

这是某种错误还是我错过了什么?

1 个答案:

答案 0 :(得分:7)

它是有效的JSON,但它不是有效的Firebase。它似乎不喜欢这些时期。如果你真的必须使用浮点数作为你的属性名称(这听起来有问题),你可以尝试用其他字符替换句号,如下划线或逗号。

摘自Firebase文档中的Creating References页面:

字符集限制

请注意,用于构建Firebase引用的网址可能包含除以下内容之外的任何unicode字符:

  • 。 (周期)
  • $(美元符号)
  • [(左方括号)
  • ](右方括号)
  • #(哈希或井号)
  • /(正斜线)

和ASCII控制字符0-31和127。

您可以使用此正则表达式检查这些字符是否存在:

/[\[\].#$\/\u0000-\u001F\u007F]/