我在xcode 7.3.1中使用Swift 2。
我的项目中有阿拉莫火3.4 & SwiftyJSON。我知道可以使用以下代码将响应结果值从Alamofire转换为JSON(由SwiftyJSON定义的结构)类型:
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
// now I get JSON type object, then what?
let json = JSON(value)
print("JSON: \(json)")
}
case .Failure(let error):
print(error)
}
}我的问题是,在获得json之后,如何将其转换为自定义类的对象?
例如,json具有以下结构:
{"name":
"Kate",
"age": 23,
"books":[{"id":1,"name":"book-1"},{"id":2,"name":"book-2"}]
}我有一堂斯威夫特课:
class Student {
var name: String!
var age: Int!
var books:[Book]
...
}
class Book {
var id: Int!
var name: String!
...
}我如何将json转换为Student对象,反之亦然?
(我是iOS的新手,我刚在互联网上发现有人建议这两个库用于JSON响应处理,所以我使用它们。如果没有必要,或者有其他有效的方法来实现它,请指出我。(事先谢谢。)
发布于 2016-05-13 10:03:08
我认为您可以在Book和 struct 结构中添加json数据的转换方法,在Swift中使用Struct而不是Class。我写了一些示例代码,
struct Book {
var id: Int
var name: String
static func booksFromJSONArray(jsonArray: [JSON]) -> [Book]? {
return jsonArray.flatMap{ jsonItem -> Book in
guard let id = jsonItem["id"].int,
let name = jsonItem["name"].string
else { return nil }
return Book(id: id, name: name)
}
}
struct Student {
var name: String
var age: Int
var books: [Book]
func studentFromJSONData(jsonData: JSON) -> Student {
let name = jsonData["name"].stringValue
let age = jsonData["age"].intValue
let books = Book.booksFromJSONArray(jsonData["books"].arrayValue)
return Student(name: name, age: age, books: books)
}
}https://stackoverflow.com/questions/37197520
复制相似问题