无法从天气 API 获取 json。 iOS
Posted
技术标签:
【中文标题】无法从天气 API 获取 json。 iOS【英文标题】:Can't get json from weather-api. iOS 【发布时间】:2017-01-20 10:56:03 【问题描述】:这是 JSON 文件
"weather":[
"id":804,
"main":"Clouds",
"description":"overcast clouds",
"icon":"04d"
],
"main":
"temp":273.15,
"pressure":1035,
"humidity":84,
"temp_min":273.15,
"temp_max":273.15
,
"name":"Wroclaw",
这是代码。
var cityName: String!
var degree: Int!
var someWeather: String!
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]
if let main = json["main"] as? [String : AnyObject]
if let temp = main["temp"] as? Int
self.degree = temp
if let city = json["name"] as? String
self.cityName = city
if let weather = json["weather"] as? [String : AnyObject]
if let someWeather = weather["main"] as? String
self.weatherDescription = someWeather
labelWeather.text = self.weatherDescription
如何将json中天气的“main”或“description”的值保存到变量weatherDescription?我尝试在这段代码中,但它没有显示任何东西。 度数和城市名称可以正确显示,但天气不起作用。
更新的代码 ////////////////////////////////
var let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]
if let main = json["main"] as? [String : AnyObject]
if let temp = main["temp"] as? Int
self.degree = temp
if let pressuer = main["pressure"] as? Int
self.cisnienie = pressuer
if let weather = json["weather"] as? [[String : Any]]
for data in weather
if let main = data["main"] as? String
print(main)
if let nazwa = json["name"] as? String
self.nazwaMiasta = nazwa
这是所有 JSON 文件:
"coord":
"lon":-0.13,
"lat":51.51
,
"weather":[
"id":800,
"main":"Clear",
"description":"clear sky",
"icon":"01d"
],
"base":"stations",
"main":
"temp":279.07,
"pressure":1032,
"humidity":52,
"temp_min":278.15,
"temp_max":280.15
,
"visibility":10000,
"wind":
"speed":7.2,
"deg":80
,
"clouds":
"all":0
,
"dt":1484923800,
"sys":
"type":1,
"id":5091,
"message":0.0087,
"country":"GB",
"sunrise":1484898825,
"sunset":1484929819
,
"id":2643743,
"name":"London",
"cod":200
【问题讨论】:
【参考方案1】:“天气”是array
而不是dictionary
..
if let weather = json["weather"] as? [[String : Any]]
for data in weather
if let main = data["main"] as? String
print(main)
【讨论】:
我有错误:类型(键:字符串,值:AnyObject)没有下标成员如何将这个“主要”从“天气”保存到不打印的变量。 在哪一行? 打印(数据[“main”]) 我使用的是 swift 3.0.2 我更新了代码,也有同样的错误。在我的问题中,我添加了所有 JSON 文件和我的代码以上是关于无法从天气 API 获取 json。 iOS的主要内容,如果未能解决你的问题,请参考以下文章
地理位置始终显示莫斯科 Javascript/JQuery/JSON(开放天气 API)