我有来自http://openweathermap.org/的json,它看起来像这样:
{
"coord": {
"lon": 4.85,
"lat": 45.75
},
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "broken clouds",
"icon": "04d"
}
],
"base": "cmc stations",
"main": {
"temp": 278.988,
"pressure": 985.88,
"humidity": 92,
"temp_min": 278.988,
"temp_max": 278.988,
"sea_level": 1032.68,
"grnd_level": 985.88
},
"wind": {
"speed": 1.8,
"deg": 355
},
"clouds": {
"all": 80
},
"dt": 1445249394,
"sys": {
"message": 0.0037,
"country": "FR",
"sunrise": 1445234548,
"sunset": 1445273273
},
"id": 2996944,
"name": "Lyon",
"cod": 200
}
我正在使用Alamofire 3.0进行网络连接,使用ObjectMapper将json映射到模型,使用AlamofireObjectMapper扩展来从请求而不是json获取模型对象。 现在我需要得到天气描述,但不知道如何为它写路径。尝试[“weather.0.description”],[“天气。$ 0.description”],但这些都不起作用,我的天气描述为零。
这是我的模特:
class WCurrentWeather: Mappable {
var weatherDescription: String?
var tempriture: Double?
var clouds: Double?
var rain: Double?
var humidity: Double?
var pressure: Double?
var sunrise: NSDate?
var sunset: NSDate?
required init?(_ map: Map){
}
func mapping(map: Map) {
weatherDescription <- map["weather.0.description"]
tempriture <- map["main.temp"]
clouds <- map["clouds.all"]
rain <- map["rain.1h"]
humidity <- map["main.humidity"]
pressure <- map["main.pressure"]
sunrise <- (map["sys.sunrise"], DateTransform())
sunset <- (map["sys.sunset"], DateTransform())
}
}
和我的要求:
Alamofire.request(.GET, URL, parameters: params)
.responseObject { (response: WCurrentWeather?, error: ErrorType?) in
completionHandler(response, error)
}
有没有办法让这个工作。 提前致谢。
答案 0 :(得分:1)
我已经分叉了ObjectMapper,并添加了这个功能,感谢Tristan Himmelman它已经合并了,所以现在你可以访问嵌套数组元素,比如这个map [“weather.0.description”]
答案 1 :(得分:0)
您正在寻找的是:
let jsonDict = // You dict
jsonDict["weather"][0]["description"]
我只是给你一个方向。您需要将其与Swift类型转换规则对齐。祝你好运!