3

我意识到在将一些 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

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

4

1 回答 1

8

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

取自Firebase 文档中的“创建参考”页面:

字符集限制

请注意,用于构造 Firebase 引用的 URL 可能包含任何 Unicode 字符,但以下情况除外:

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

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

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

/[\[\].#$\/\u0000-\u001F\u007F]/
于 2013-06-14T17:04:35.083 回答