Cha*_*ish 15 swift swift4 codable
所以我有一个返回JSON对象数组的API路由.例如:
[
{"firstname": "Tom", "lastname": "Smith", "age": 31},
{"firstname": "Bob", "lastname": "Smith", "age": 28}
]
Run Code Online (Sandbox Code Playgroud)
我试图想象如何在Swift中使用新的可编码特性将它们转换为类中的两个对象.因此,如果我有一个可编码的人类,我会想要采取这种反应并让它给我两个人物.
我也在使用Alamofire来处理这些请求.
我怎样才能做到这一点?到目前为止,我所看到的与可编码内容有关的所有内容只允许1个对象.我还没有看到任何与Alamofire或Web框架的集成.
nat*_*han 17
关于Alamofire 5的更新:responseJSONDecodable.
struct Person: Codable {
let firstName, lastName: String
let age: Int
enum CodingKeys : String, CodingKey {
case firstName = "firstname"
case lastName = "lastname"
case age
}
}
Alamofire.request(request).responseJSONDecodable { (response: DataResponse<Person>) in
print(response)
}
Run Code Online (Sandbox Code Playgroud)
Alamofire 4现在不会添加Codable支持(参见#2177),您可以使用此扩展名:https://github.com/Otbivnoe/CodableAlamofire.
let jsonData = """
[
{"firstname": "Tom", "lastname": "Smith", "age": 31},
{"firstname": "Bob", "lastname": "Smith", "age": 28}
]
""".data(using: .utf8)!
struct Person: Codable {
let firstName, lastName: String
let age: Int
enum CodingKeys : String, CodingKey {
case firstName = "firstname"
case lastName = "lastname"
case age
}
}
let decoded = try! JSONDecoder().decode([Person].self, from: jsonData)
Run Code Online (Sandbox Code Playgroud)
示例:http://swift.sandbox.bluemix.net/#/repl/59a4b4fad129044611590820
使用CodableAlamofire:
let decoder = JSONDecoder()
Alamofire.request(url).responseDecodableObject(keyPath: nil, decoder: decoder) { (response: DataResponse<[Person]>) in
let persons = response.result.value
print(persons)
}
Run Code Online (Sandbox Code Playgroud)
keypath对应于结果包含在JSON结构中的路径.例如:
{
"result": {
"persons": [
{"firstname": "Tom", "lastname": "Smith", "age": 31},
{"firstname": "Bob", "lastname": "Smith", "age": 28}
]
}
}
Run Code Online (Sandbox Code Playgroud)
keypath => results.persons
[
{"firstname": "Tom", "lastname": "Smith", "age": 31},
{"firstname": "Bob", "lastname": "Smith", "age": 28}
]
Run Code Online (Sandbox Code Playgroud)
keypath=> nil(空keypath抛出异常)
| 归档时间: |
|
| 查看次数: |
11709 次 |
| 最近记录: |