CWill
CWill

Reputation: 23

Accessing json values

I have loaded the following json this way:

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

sample output of 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'}

I cannot figure out how to access the value of "num_bikes_available" of certain stations. When I try cabi_station_status["stations"]["station_id"][1]

it does not return anything. Pseudo code for my ideal output would be to get the "num_bikes"available" when "station_id" == 1. and return an integer, in this case, 5.

Upvotes: 1

Views: 74

Answers (3)

Afaq
Afaq

Reputation: 1155

cabi_station_status["stations"] is a list.

You should use a loop to iterate over each station and from each station get num_bikes_available.

each_station['num_bikes_available']

Your solution would look like:

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

Upvotes: 1

Greg Eremeev
Greg Eremeev

Reputation: 1840

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

Upvotes: 0

Daniel Roseman
Daniel Roseman

Reputation: 599926

cabi_station_status["stations"] is a list; you need to refer to its elements by index, not key.

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

Upvotes: 0

Related Questions