我发现了什么问题!
显然,默认情况下,所有JSON值都是string类型 .
{“age_in_days”= 1401753600; “height_nom”=“13.5”; “height_ovr”=“14.0”; lat =“24.084082”; lon =“89.023476”; “station_id”= 1; }
因此,获取double值的正确方法是:
var dataDictionary = NSJSONSerialization.JSONObjectWithData(dataInput, options: NSJSONReadingOptions.MutableContainers, error: &error) as? NSDictionary
var stationsInfo: NSArray = stationsDictionary["stations"]! as NSArray
for station in stationsInfo{
//parse the information
var age_in_days : Int = (station["age_in_days"] as String).toInt()!
var hight_normal: Double = (station["height_nom"] as NSString).doubleValue
var hight_over : Double = (station["height_ovr"] as NSString).doubleValue
var latitude: CLLocationDegrees = (station["lat"] as NSString).doubleValue
var longitude: CLLocationDegrees = (station["lon"] as NSString).doubleValue
var station_id : Int = (station["station_id"] as String).toInt()!
注意:类型String不包含.toDouble()函数,这就是我不得不使用类型NSString的原因 .
此外,非常重要注意:两个键“age_in_days”和“station_id”在JSON中显示为int类型(如上面的引用中所示),但NSJSONSerialization函数从String类型中获取所有值!