Python and JSON - TypeError list indices must be integers not str
json, python
Solution
First of all, you should be using `json.loads`, not `json.dumps`. `loads` converts JSON source text to a Python value, while `dumps` goes the other way.
After you fix that, based on the JSON snippet at the top of your question, `readable_json` will be a list, and so `readable_json['firstName']` is meaningless. The correct way to get the `'firstName'` field of every element of a list is to eliminate the `playerstuff = readable_json['firstName']` line and change `for i in playerstuff:` to `for i in readable_json:`.
Problem
I am learning to use Python and APIs (specifically, this World Cup API, http://www.kimonolabs.com/worldcup/explorer) The JSON data looks like this: ``` [ { "firstName": "Nicolas Alexis Julio", "lastName": "N'Koulou N'Doubena", "nickname": "N. N'Koulou", "assists": 0, "clubId": "5AF524A1-830C-4D75-8C54-2D0BA1F9BE33", "teamId": "DF25ABB8-37EB-4C2A-8B6C-BDA53BF5A74D", "id": "D9AD1E6D-4253-4B88-BB78-0F43E02AF016", "type": "Player" }, { "firstName": "Alexandre Dimitri", "lastName": "Song-Billong", "nickname": "A. Song", "clubId": "35BCEEAF-37D3-4685-83C4-DDCA504E0653", "teamId": "DF25ABB8-37EB-4C2A-8B6C-BDA53BF5A74D", "id": "A84540B7-37B6-416F-8C4D-8EAD55D113D9", "type": "Player" }, ] ``` I am simply trying to print all of the firstNames in this API. Here's what I have: ``` import urllib2 import json url = "http://worldcup.kimonolabs.com/api/players?apikey=xxx" json_obj = urllib2.urlopen(url).read readable_json = json.dumps(json_obj) playerstuff = readable_json['firstName'] for i in playerstuff: print i['firstName'] ``` But when I run it, I get the error "...line 8, in ...TypeError: list indices must be integers, not str" I have looked around for solutions, but seem to find questions to more "in depth" API questions and I don't really understand it all yet, so any help or explanation as to what I need to do would be amazing. Thank you!