我正在swift 3中编写一个代码,用于解析来自http请求的json格式的查询。
json格式为:
JSON: {
base = stations;
coord = {
lat = "23.9";
lon = "42.89";
};
weather = (
{
description = mist;
icon = 50n;
id = 701;
main = Mist;
},
{
description = fog;
icon = 50n;
id = 741;
main = Fog;
}
);
wind = {
deg = "222.506";
speed = "1.72";
};}
我的代码是:
Alamofire.request(url).responseJSON { response in
if let a = response.result.value {
let jsonVar = JSON(a)
if let resDati = jsonVar["base"].string {
print(resDati as String) // <- OK
}
if let dati2 = jsonVar["weather"].array {
for item in dati2 {
print(" > \(item["main"])") // <- OK
}
}
} else {
print(Error.self)
}
}
问题出在我所尝试的“coord”和“wind”数据上:
if let dati4 = jsonVar["wind"].array {
for item in dati4 {
print("-- \(item)")
} }
我无法以json格式打印“wind”和“coord”的数据亲属。
我该如何解决这个问题。
谢谢。
答案 0 :(得分:2)
键wind
包含字典,而不是数组,您可以使用此代码使用SwiftyJSON获取deg
和speed
值:
if let wind = jsonVar["wind"].dictionary,
let deg = wind["deg"]?.double,
let speed = wind["speed"]?.double {
print(deg, speed)
}
coord
相应地运作
if let coord = jsonVar["coord"].dictionary,
let lat = coord["lat"]?.double,
let lon = coord["lon"]?.double {
print(lat, lon)
}
注意:所有值都是Double
类型, json格式具有误导性。