HandyJSON是一種Swift庫,用于將JSON數(shù)據(jù)轉換為Swift對象,同時也可以將Swift對象轉換為JSON數(shù)據(jù)。
一、導入HandyJSON庫
在Profile文件插入:
pod 'HandyJSON'
終端cd ~/項目路徑,執(zhí)行pod install,等待安裝完成即可
二、創(chuàng)建Swift數(shù)據(jù)模型
創(chuàng)建Swift類,并使其遵循HandyJSON協(xié)議。如果你需要存儲JSON中的所有字段,可以將類屬性定義為可選類型。
import HandyJSON
class User: HandyJSON {
var name: String?
var age: Int?
required init() {}
}
三、解析JSON數(shù)據(jù)
使用JSONDeserializer解析JSON,并使用HandyJSON協(xié)議解析成Swift對象。
避免報錯
No exact matches in call to static method 'deserialize'data必須聲明為String?,[String: Any]?,NSDictionary?
let jsonDict: NSDictionary = ["name": "Tom", "age": 12]
if let user = JSONDeserializer<User>.deserializeFrom(dict: jsonDict) {
print(user.name)
print(user.age)
}
或者
let jsonDict: NSDictionary = ["name": "Tom", "age": 12]
let user = User.deserialize(from: jsonDict)
如果是轉成模型數(shù)組,則可以這樣:
let jsonArray = [
["name": "Tom", "age": 19],
["name": "Jerry", "age": 28]
]
let userArray = Array<User>.deserialize(from: jsonArray as? Array<Any>)
四、將Swift對象轉換為JSON數(shù)據(jù)
使用toJSONString()方法將Swift對象轉換為JSON字符串。
let user = User()
user.name = "Tom"
user.age = 18
// 1、轉換成json數(shù)據(jù)
user.toJSON()
// 2、轉換成json字符串
if let jsonString = user.toJSONString() {
print(jsonString) // 打印結果:{"name":"Tom", "age":18}
}
以上就是使用HandyJSON的基本方法。需要注意的是,除了標量類型的屬性(例如String、Int、Double)以外,所有其他自定義類型(例如數(shù)組,字典等)也必須遵循HandyJSON協(xié)議。
如果不記得轉換方法,可以封裝一個類、或者寫個Extension擴展類去實現(xiàn)所有轉換方法。避免使用時忘記,每次都要去找文檔了。