如何从openWeahter获取天气

时间:2017-05-23 15:01:59

标签: python json flask

我对Json,Phyton非常陌生。但我试图创建自己的天气应用程序。 我没有把这个Jsonobject的天气搞定。

这就是Jsonobject的样子:

FROM microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApplication3.dll"]

这是我的代码:

{"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}

这是错误:

  

ypeError:不可用类型:' list'

2 个答案:

答案 0 :(得分:0)

我相信这是你做错的地方

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

将其更改为:

weer = json_object['weather'][0]

另外,我不认为你有数据对象' name'在您的json数据plaats = str(json_object['name'])

答案 1 :(得分:0)

在您的上述请求中,您尝试使用绑定索引(即[1])访问列表,而不必使用[0]:

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)

我相信你会得到理想的结果。