你好,我是swift的新手,我有来自alamofire的responseJson由jsonArray组成,包含像这样的jsonObjects
[{"id":"1","name":"person1"},{"id":"2","name":"person2"}]
我如何将其解析为此自定义模型的数组
class Person {
var name : String
var id : String
}
我做了很多搜索,但找不到与我相同的案例,我无法使用Codable,因为我使用xcode 8而无法将我的xcode版本升级为9现在
我得到了这样的回复
Alamofire.request(url).responseJSON{ response in
if(response.result.isSuccess)
{
if let jsonarray = response.result.value as? [[String: Any]]
{
//what to do here ?
}
}
}
答案 0 :(得分:1)
if let jsonarray = response.result.value as? [[String: Any]]{
//what to do here ?
var persons:[Person] = []
for userDictionary in jsonarray{
guard let id = userDictionary["id"] as? String, let name = userDictionary["name"] as? String else { continue }
persons.append(Person(id, name))
}
//Persons complete.
}
使用guard else
获取所需的变量。
如果其他变量可以是可选的,例如var age:Int?
中的Person
,您可以这样做:
for userDictionary in jsonarray{
guard let id = userDictionary["id"] as? String, let name = userDictionary["name"] as? String else { continue }
let age = userDictionary["age"] as? Int
persons.append(Person(id, name, age))
}
答案 1 :(得分:0)
@Tony,
在 swift4 中,您可以可编码协议来解析有助于编写通用代码的JSON。假设在将来的需求中添加dob比非常简单。 在 swift3 中,您可以使用对象映射器类。
如果您需要更多帮助,请告诉我。