2016-06-03 15 views
-2

Ich kann Spotify erfolgreich nach einem Interpreten suchen. Mein Problem ist, dass ich die Bild-URL des Künstlers aus der JSON-Antwort ziehen möchte.Loop-Listenelemente in JSON

Jedes Mal, wenn ich versuche, die URL ich den Fehler

TypeError: list indices must be integers or slices, not str 

Mein Code erhalten zu erhalten, ist wie folgt:

import requests 
import pyCiscoSpark 
import json 
import sys 

def _url(path): 
    return 'https://api.spotify.com/v1/search' + path 

artist = 'AC/DC' 

spotifyR = requests.get(_url('?q={:s}&type=artist'.format(artist))) 
spotifyJson = spotifyR.json() 
req = spotifyJson['artists']['items']['images']['url'] 
print(req) 

Ich mag die URL der Bilder in einem dict so kann ich wählen die richtige Größe des Bildes, das Spotify hat.

+1

Offensichtlich ist mindestens eine Ebene der JSON-Antwort ein Array (das zu einer Liste wird), kein Objekt (das zu einem Wörterbuch wird), also müssen Sie Verwenden Sie einen numerischen Index anstelle eines Zeichenfolges. – jonrsharpe

Antwort

1

Sie können

from pprint import pprint 
pprint(spotifyJson) 

Tat im Objekt einen visuellen Blick wie jonrsharpe darauf hingewiesen, ‚Artikel‘ ist eine Liste, also entweder Sie iterieren es oder ein Element auswählen. 'Bilder' ist auch eine Liste.

images = spotifyJson['artists']['items'][0]['images'] 
for img in images: 
    print(img['width']) 
    print(img['height']) 
    print(img['url']) 
+0

Vielen Dank Ihren Vorschlag geholfen! –

0

Der Wert für den Schlüssel 'Elemente' in der JSON-Antwort ist eine Liste von Wörterbüchern. Vielleicht möchten Sie etwas wie:

images = spotifyJson['artists']['items'][0]['images'] 
    for img in images: 
     print img 

Dies wird das Info-Wörterbuch für alle Bilder drucken. Dann können Sie von dort die gewünschten URLs verarbeiten :)