我正在尝试使用Swift 4中的OpenWeatherMap API构建一个简单的天气应用程序。我可以在简单的情况下解析Json数据,但这一个具有更复杂的结构。
这是API返回的Json文件。
{"coord":{"lon":144.96," lat":-37.81}," weather":[{"id":520," main":"Rain "," description ":"光强度阵雨雨"," icon":"09n"}]," base":"stations "," main":{"temp":288.82," pressure":1019,"湿度":100," temp_min":288.15," temp_max":289.15},"能见度":100
我创建了一些结构来获取Json数据。
struct CurrentLocalWeather: Decodable {
let base: String
let clouds: Clouds
let cod: Int
let coord: Coord
let dt: Int
let id: Int
let main: Main
let name: String
let sys: Sys
let visibility: Int
let weather: [Weather]
let wind: Wind
}
struct Clouds: Decodable {
let all: Int
}
struct Coord: Decodable {
let lat: Double
let lon: Double
}
struct Main: Decodable {
let humidity: Int
let pressure: Int
let temp: Double
let tempMax: Int
let tempMin: Int
private enum CodingKeys: String, CodingKey {
case humidity, pressure, temp, tempMax = "temp_max", tempMin = "temp_min"
}
}
struct Sys: Decodable {
let country: String
let id: Int
let message: Double
let sunrise: UInt64
let sunset: UInt64
let type: Int
}
struct Weather: Decodable {
let description: String
let icon: String
let id: Int
let main: String
}
struct Wind: Decodable {
let deg: Int
let speed: Double
}
要使用这些数据,这是我编写的代码:
let url = "https://api.openweathermap.org/data/2.5/weather?q=melbourne&APPID=XXXXXXXXXXXXXXXX"
let objurl = URL(string: url)
URLSession.shared.dataTask(with: objurl!) {(data, response, error) in
do {
let forecast = try JSONDecoder().decode([CurrentLocalWeather].self, from: data!)
for weather in forecast {
print(weather.name)
}
} catch {
print("Error")
}
}.resume()
这将在控制台中打印城市名称。不幸的是,它打印错误。
你需要
let forecast = try JSONDecoder().decode(CurrentLocalWeather.self, from: data!)
print(forcast.name)
因为根是字典,而不是数组
我得到异常“http://api.openweathermap.org/data/2.5/weather?q=sydney”。有人能帮忙怎么用吗。当我粘贴以下内容时,可以很好地使用web浏览器 我也试过下面的组合,但没有运气
我想从OpenWeatherMap API获取基于经度和纬度的天气信息,但我得到了错误信息 净重::ERR_CONNECTION_REFUSED 项目codepen.io 我正在使用https://geoip-db.com/以获得纬度和经度。URL(天气链接)正确。完全错误: 得到https://api.openweathermap.org/data/2.5/weather?lat=51.1
我试图从值中检索Main和Description,但是它没有显示在UILabel中。所有其他参数显示良好。比如温度,最高和最低温度,风速和风向。我也有天气图标的困难,需要一些指导,如果我的代码是正确的。 这是查询的结果: {“coord”:{“lon”:-114.09,“lat”: 51.05},“天气”:[{“id”: 802,“main”:“Clouds”,“描述”:“散落的云”,“图标”:“
我想得到openweathermap图标。https://openweathermap.org/weather-conditions和http://samples.openweathermap.org/data/2.5/weather?q=London,英国 非常感谢你。你的建议对我很重要
我需要使用他们的API和SAS系统连接到OpenWeatherMap。可以使用以下地址调用APIapi.openweathermap.org/data/2.5/weather?q=London, uk 我已经使用以下方法连接到另一个API: 因此,我认为我可以使用类似的代码,但没有任何运气。API调用的输出由下式给出: {“coord”:{“lon”:-0.13,“lat”:51.51},“wea
所以…我得到了一个调用Api,其中还包括7天的预测。我设法显示了当前的天气(温度和图标),但如何获得未来4天的天气预报? 我的API:https://api.openweathermap.org/data/2.5/onecall?lat=lat 我的型号: 我的回答是: 响应对象: 来自OneCall API的JSON: