print example dict create python json

example - python json to dict



Python y JSON: los índices de la lista TypeError deben ser enteros y no str (3)

En primer lugar, debe utilizar json.loads , no json.dumps . loads convierte el texto de origen JSON a un valor de Python, mientras que los dumps van a la inversa.

Después de que arregle eso, basado en el fragmento JSON en la parte superior de su pregunta, readable_json será una lista, por lo que readable_json[''firstName''] tiene sentido. La forma correcta de obtener el campo ''firstName'' de cada elemento de una lista es eliminar la línea playerstuff = readable_json[''firstName''] y cambiar for i in playerstuff: to for i in readable_json:

Estoy aprendiendo a usar Python y API (específicamente, esta API de la Copa del Mundo, http://www.kimonolabs.com/worldcup/explorer )

Los datos de JSON se ven así:

[ { "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" }, ]

Simplemente estoy tratando de imprimir todos los primeros nombres en esta API. Esto es lo que tengo:

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'']

Pero cuando lo ejecuto, aparece el error "... línea 8, en ... Tipo de error: los índices de lista deben ser enteros, no str"

He buscado soluciones por todas partes, pero parece que encuentro preguntas para más preguntas "en profundidad" de la API y todavía no lo entiendo todo, por lo que cualquier ayuda o explicación sobre lo que debo hacer sería increíble. ¡Gracias!


Puedes simplificar tu código hasta

url = "http://worldcup.kimonolabs.com/api/players?apikey=xxx" json_obj = urllib2.urlopen(url).read player_json_list = json.loads(json_obj) for player in readable_json_list: print player[''firstName'']

Intentabas acceder a un elemento de la lista mediante la sintaxis del diccionario. el equivalente de

foo = [1, 2, 3, 4] foo["1"]

Puede ser confuso cuando tiene listas de diccionarios y mantener el agrupamiento en orden.


Resolví cambiando

readable_json[''firstName'']

por

readable_json[0][''firstName'']