【问题标题】:Firebase Using Floating-Point Number as KeyFirebase 使用浮点数作为键
【发布时间】:2013-06-14 16:41:33
【问题描述】:

我意识到,当我将一些 JSON 数据推送到我的 Firebase 存储中时,我从服务器收到了 400 HTTP Bad Request,这些数据的键是浮点数。这是我得到的回复:

    {"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

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

【问题讨论】:

    标签: python json firebase


    【解决方案1】:

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

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

    字符集限制

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

    • 。 (句号)
    • $(美元符号)
    • [(左方括号)
    • ](右方括号)
    • #(井号或井号)
    • /(正斜杠)

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-13
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多