访问json值

时间:2017-03-12 15:48:53

标签: python json

我以这种方式加载了以下json:

url2 = "https://gbfs.capitalbikeshare.com/gbfs/en/station_status.json"
response2 = urllib2.urlopen(url2)
cabi_station_status = json.load(response2)

cabi_station_status的示例输出:

{u'stations': [{u'eightd_has_available_keys': False,
   u'is_installed': 1,
   u'is_renting': 1,
   u'is_returning': 1,
   u'last_reported': 1489309320,
   u'num_bikes_available': 5,
   u'num_bikes_disabled': 0,
   u'num_docks_available': 10,
   u'num_docks_disabled': 0,
   u'station_id': u'1'},
  {u'eightd_has_available_keys': False,
   u'is_installed': 1,
   u'is_renting': 1,
   u'is_returning': 1,
   u'last_reported': 1489309256,
   u'num_bikes_available': 5,
   u'num_bikes_disabled': 0,
   u'num_docks_available': 6,
   u'num_docks_disabled': 0,
   u'station_id': u'2'}

我无法弄清楚如何访问某些电台的“num_bikes_available”值。当我尝试cabi_station_status["stations"]["station_id"][1]

它不会返回任何内容。我的理想输出的伪代码是在“station_id”== 1时获得“num_bikes”,并返回一个整数,在本例中为5。

3 个答案:

答案 0 :(得分:1)

cabi_station_status["stations"]是一个列表。

您应该使用循环迭代每个电台,并从每个电台获取num_bikes_available

each_station['num_bikes_available']

您的解决方案如下:

for each_station in cabi_station_status["stations"]:
    if each_station['station_id'] == '1':
        return each_station['num_bikes_available']

答案 1 :(得分:0)

cabi_station_status["stations"]是一个列表;你需要通过索引来引用它的元素,而不是键。

cabi_station_status["stations"][0]["num_bikes_available"]

答案 2 :(得分:0)

for station in cabi_station_status['stations']:
    if station['station_id'] == '1':
        print(station['num_bikes_available'])