如何使用字典从python中提取嵌套的JSON值?

时间:2016-11-15 15:39:09

标签: javascript python json firebase firebase-realtime-database

我的数据库格式如下:

{
  "latitude" : 41.884629,
  "longitude" : -87.648764,
  "name" : "Bar Siena",
  "placeID" : "ChIJf3h_t9osDogReehZO7Hgk50",
  "vibes" : {
    "LGpswrvLgfYppcBG4bpmNzXQVoU2" : {
      "rating" : 1,
      "timestamp" : 1.477961061358844E9
    },
    "OSzA2KhTBWS3pxVnCZ6eScAuNDG3" : {
      "rating" : 5,
      "timestamp" : 1.477955566836665E9
    }
  }
}

我想拉出每个条形图的名称,以及振动表中与之对应的每个评级。我的代码如下所示:

firebase = pyrebase.initialize_app(config)

db = firebase.database()
for i in range(1,100):
    venues = db.child("venues").child(i).get()
    dict = (venues.val())
    print(dict['name'])

到目前为止,我只能得到这些名字,但我不确定如何更深入地获得收视率。我的数据库是使用Firebase管理的,我正在使用一个名为Pyrebase的python库,它只是javascript api的包装器。我遇到了麻烦,因为每个氛围都有一个生成的哈希键,所以我不确定如何更深入。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

vibes可能是一本字典。你想要的是每个哈希键的评级,所以你可以做类似

的事情
for hashkey, vibe_dict in dict['vibes'].items(): # dict is a Python keyword, so it's a bad choice for a variable!
    print(hashkey, vibe_dict['rating'])

答案 1 :(得分:0)

我不确定firebase,但在普通的python中你可以这样做:

>>> for vibe in my_json['vibes'].values():
...     print vibe['rating']
...
1  # Rating of item 1
5  # Rating of item 2

其中my_json是json的dict版本:

{
   "latitude":41.884629,
   "longitude":-87.648764,
   "name":"Bar Siena",
   "placeID":"ChIJf3h_t9osDogReehZO7Hgk50",
   "vibes":{
      "LGpswrvLgfYppcBG4bpmNzXQVoU2":{
         "rating":1,
         "timestamp":1.477961061358844E9
      },
      "OSzA2KhTBWS3pxVnCZ6eScAuNDG3":{
         "rating":5,
         "timestamp":1.477955566836665E9
      }
   }
}

答案 2 :(得分:0)

如果您的venues变量是一个类似JSON的对象,您可以使用标准json库来处理它:

import json
dict_data = json.loads(venues)
print dict_data['latitude']

顺便说一下,这是一种糟糕的开发方式 - 覆盖内置的Python功能。在您的示例中,您将覆盖dict(dict是默认的Python类型对象)