2017-02-25 2 views
2

Ich möchte in der Lage sein, eine bestimmte Variable in einem JSON-Array auszuwerten. Mein Skript erlaubt dem Benutzer, lat/lon/SKU einzugeben, da die URL um diese Parameter herum aufgebaut ist. Dann möchte ich die JSON-Daten drucken, aber ich sorge nur eine Variable: "AddressCityStateZip". Der Code funktioniert perfekt ... wenn es nur einen "Satz von Variablen" gibt (ich entschuldige mich für die fehlende Terminologie), aber wenn mehr als ein Speicher im Ergebnis zurückgegeben wird, bekomme ich nur den FIRST Wert zurück. Beispiel dafür ist, wenn diese JSON zurückgegeben:Mehrere JSON-Datenfelder für die gleiche Kategorie in Python drucken (nur den ersten Wert drucken)

[{"DisplayName":"Bridgewater Plaza","AddressStreet":"233 Broad ST","AddressCityStateZip":"Bridgewater, MA 02324","Phone":"5086970422","Latitude":41.996038893609,"Longitude":-70.9730786855837,"DistanceNumber":1.4091862149476761089787,"Distance":"1.4 Mi","StoreNumber":3776,"IsNewAvailable":false,"IsPreOwnedAvailable":true,"IsDigitalAvailable":true,"IsHopsEnabled":true},{"DisplayName":"Crescent Plaza","AddressStreet":"715 Crescent St","AddressCityStateZip":"Brockton, MA 02302","Phone":"5084275334","Latitude":42.0811691880226,"Longitude":-70.9903740137815,"DistanceNumber":5.62995717249044434817,"Distance":"5.6 Mi","StoreNumber":2225,"IsNewAvailable":false,"IsPreOwnedAvailable":true,"IsDigitalAvailable":true,"IsHopsEnabled":true}, 

würde ich nur bekommen "Bridgewater, MA 02324" gedruckt, statt BEIDE "Bridgewater, MA 02324" AND "Brockton, MA 02302".

Hier ist ein Teil meines Codes zu berechnen, was mache ich falsch?

lat = raw_input("Enter the lat: ") #THIS IS WHERE WE NEED TO STORE VALUES OPENED FROM FILE: LATS.CSV (OR LATS.TXT ?) 
lon = raw_input("Enter the lon: ") #THIS IS WHERE WE NEED TO STORE VALUES OPENED FROM FILE: LONS.CSV (OR LONS.TXT ?) 
sku = raw_input("Enter the SKU: ") #THIS IS WHERE WE STORE USER INPUT FOR GAME SKU. ITS /NOT/ DERIVED FROM A FILE...YET. 


url = "http://www.gamestop.com/PickUpAtStore/Stores/GetStoresByLocation?latitude=%s&longitude=-%s&newSku=&usedSku=%s&digitalSku=%s&displayMode=HOPS&displaySku=%s" % (lat, lon, sku, sku, sku) 

print 
print url 
print 

r = requests.get(url,) 

mm = r.json()[0]["AddressCityStateZip"] 
print mm 
+2

Haben Sie von Schleifen gehört? –

Antwort

1

Sie drucken nur das erste Element in dem Array json indem sie sie mit [0] erreichbar. Stattdessen könnten Sie eine Schleife darüber führen:

for j in r.json(): 
    print j["AddressCityStateZip"] 
+0

Danke! Ich bin sehr neu in der Verwendung von Python und JSON :) Ich wusste, dass irgendwo eine Schleife drin war, ich wusste einfach nicht, dass es so einfach war –