2017-05-23 13 views
-3

Ich bin extrem neu in Json, Phyton. Aber ich versuche, meine eigene Wetter-App zu erstellen. Ich bekomme das Wetter aus diesem Jsonobject nicht heraus.Wie bekomme ich Wetter von OpenWeahter

Dies ist, was die JSONObject wie folgt aussieht:

{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":300,"main":"Drizzle","description":"light intensity drizzle","icon":"09d"}],"base":"stations","main":{"temp":280.32,"pressure":1012,"humidity":81,"temp_min":279.15,"temp_max":281.15},"visibility":10000,"wind":{"speed":4.1,"deg":80},"clouds":{"all":90},"dt":1485789600,"sys":{"type":1,"id":5091,"message":0.0103,"country":"GB","sunrise":1485762037,"sunset":1485794875},"id":2643743,"name":"London","cod":200} 

Und dies ist mein Code:

@app.route('/temperatuur', methods=['GET','POST',]) 
def temperatuur(): 
    zipcode = request.form['zip'] 
    r = requests.get('http://api.openweathermap.org/data/2.5/weather?zip='+zipcode+',be&APPID=84c7d83bae2f2396ebd3a4a48dfdd057') 
    json_object = r.json() 
    weer = json_object['weather',[1]] 
    temp_k = int(json_object['main']['temp']) 
    temp_c = (temp_k - 273) 
    plaats = str(json_object['name']) 
    return render_template('temperatuur.html', temperatuur=temp_c, plaats = plaats, weer = weer) 

Dies ist der Fehler:

ypeError: unhashable type: 'list'

+0

Mögliches Duplikat von [Access/Prozess (verschachtelte) Objekte, Arrays oder JSON] (https://StackOverflow.com/questions/11922383/access-process-Nested-Objects-arrays-or-json) – Barmar

Antwort

0

ich das glauben, wo Sie tun Sie falsch

weer = json_object['weather',[1]]

Änderung dies:

weer = json_object['weather'][0]

Auch ich glaube nicht, Sie Datenobjekt 'name' in Ihren json Daten plaats = str(json_object['name'])

0

In Ihrer obigen Anfrage Sie versuchen, Greife auf die Liste mit außerhalb des gebundenen Index zu, dh [1], stattdessen musst du [0] verwenden:

def temperatuur(): 
    zipcode = '10024' 
    r = requests.get('http://api.openweathermap.org/data/2.5/weather?zip='+zipcode+'&APPID=84c7d83bae2f2396ebd3a4a48dfdd057') 
    json_object = r.json() 
    weer = json_object['weather'][0] 
    temp_k = int(json_object['main']['temp']) 
    temp_c = (temp_k - 273) 
    plaats = str(json_object['name']) 
    return render_template('temperatuur.html', temperatuur=temp_c, plaats = plaats, weer = weer) 

I glaube, du wirst das gewünschte Ergebnis bekommen.