Python Firebase实时数据库-无法将文档读取为json/字典

Python Firebase实时数据库-无法将文档读取为json/字典,python,firebase,firebase-realtime-database,Python,Firebase,Firebase Realtime Database,在我的实时数据库中,我有一个path/stats,其中包含一组文档 我想使用python sdk将/stats文档作为dict获取 path = "/stats" ref = db.reference(path, firebase_app) document = ref.get() print(document) {"1": {'name': 'Full Time Statistics', 'thumbnail': 'https://***', 'ur

在我的实时数据库中,我有一个path/stats,其中包含一组文档

我想使用python sdk将/stats文档作为dict获取

path = "/stats"
ref = db.reference(path, firebase_app)
document = ref.get()
print(document)
{"1": {'name': 'Full Time Statistics', 'thumbnail': 'https://***', 'url': 'https://***'}}
输出是

[None, {'name': 'Full Time Statistics', 'thumbnail': 'https://***', 'url': 'https://***'}]
这是一个列表而不是字典。如何将其更改并将此文档路径作为字典阅读

path = "/stats"
ref = db.reference(path, firebase_app)
document = ref.get()
print(document)
{"1": {'name': 'Full Time Statistics', 'thumbnail': 'https://***', 'url': 'https://***'}}

另一方面,我可以得到与字典结构相似的其他文档,没有问题。为什么会这样?如何解决?这里发生了两件事:

  • 由于您正在检索
    /stats
    ,因此将获得它下面的所有节点。因为这是一个重复列表,Firebase实时数据库键是字符串,所以通常会得到一个字典(字典中的键是JSON中的键)
  • 由于您的键是数值,Firebase“认为”您正在尝试存储数组/列表,并尝试将数据强制转换为数组。这就是为什么列表中会出现
    None
    条目:这是Firebase为您填充的第0个元素
  • 不幸的是,没有办法禁用此数组强制。我通常通过在键前加一个固定字符串来绕过它,这样Firebase就绕过了它的数组逻辑。因此:

    stats: {
      stat1: { ... },
      stat2: { ... }
    }
    
    另见: