序列化
JSON
ModelMapper(模型映射)
ObjectMapper
ObjectMapper can be added to your project using CocoaPods 0.36 or later by adding the following line to your Podfile:
pod 'ObjectMapper', '~> 1.1'
If you’re using Carthage you can add a dependency on ObjectMapper by adding it to your Cartfile:
github "Hearst-DD/ObjectMapper" ~> 1.1
为了支持这种映射,一个类或者结构体必须实现 Mappable 这个接口。
public protocol Mappable {
init?(_ map: Map)
mutating func mapping(map: Map)
}
ObjectMapper 使用<-
操作符来定义如何将属性从 JSON 映射到对象:
class User: Mappable {
var username: String?
var age: Int?
var weight: Double!
var array: [AnyObject]?
var dictionary: [String : AnyObject] = [:]
var bestFriend: User? // Nested User object
var friends: [User]? // Array of Users
var birthday: NSDate?
required init?(_ map: Map) {
}
// Mappable
func mapping(map: Map) {
username <- map["username"]
age <- map["age"]
weight <- map["weight"]
array <- map["arr"]
dictionary <- map["dict"]
bestFriend <- map["best_friend"]
friends <- map["friends"]
birthday <- (map["birthday"], DateTransform())
}
}
struct Temperature: Mappable {
var celsius: Double?
var fahrenheit: Double?
init?(_ map: Map) {
}
mutating func mapping(map: Map) {
celsius <- map["celsius"]
fahrenheit <- map["fahrenheit"]
}
}