Parse JSONArray包含JSONObjects Swift

时间:2018-05-05 21:47:43

标签: ios json swift3 xcode8 alamofire

你好,我是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 ?
                    }
            }
        }

2 个答案:

答案 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 中,您可以使用对象映射器类。

如果您需要更多帮助,请告诉我。