我正在尝试为某个项目制作天气应用,并且我将api用于openweathermap。我得到它来输出一些信息,但是我不知道如何获得其余信息。这就是我将其放入邮递员时出现的结果。如何获取{}中的信息,例如温度以及最低和最高温度?我知道如果是数组,我可以遍历它,但是不是。
到目前为止,我试图像数组一样遍历它,但没有用:
if let mainJson = jsonObject["main"] as? [[String:AnyObject]]
{
for eachtemp in mainJson
{
if let temp = eachtemp["temp"] as? String
{
print("the temp is: ", temp)
}
}
}
这是api的响应:
{
"coord": {
"lon": -88.75,
"lat": 41.93
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01d"
}
],
"base": "stations",
"main": {
"temp": 281.24,
"pressure": 1019,
"humidity": 52,
"temp_min": 279.26,
"temp_max": 283.15
},
"visibility": 16093,
"wind": {
"speed": 7.7,
"deg": 280,
"gust": 11.3
},
"clouds": {
"all": 1
},
"dt": 1555176309,
"sys": {
"type": 1,
"id": 5706,
"message": 0.0073,
"country": "US",
"sunrise": 1555154275,
"sunset": 1555201965
},
"id": 420012399,
"name": "Aurora",
"cod": 200
}
答案 0 :(得分:0)
{}
是字典(快速类型[String:Any]
,从不 [String:AnyObject]
),您必须通过键订阅来获取每个值,所有请求的值都是{ {1}}
Double
关于强制展开:if let main = jsonObject["main"] as? [String:Any] {
let temp = main["temp"] as! Double
let tempMin = main["temp_min"] as! Double
let tempMax = main["temp_max"] as! Double
print(temp, tempMin, tempMax)
}
发送非常可靠的数据。如果openweathermap
存在,那么里面的键也存在
有了main
,变得更容易
Decodable